2016-07-29 53 views
0

的Xcode 7.3.1,斯威夫特2增量錄製的音頻文件名稱

我有下面的代碼行中,設置我的錄製音頻的文件名我的視圖控制器。儘管每個文件都有一個唯一的名稱,但我真的希望它更短,但卻是獨一無二的。如果文件名已經存在,我想將文件名加一。

我不確定恰當的術語來正確地查看這個,所以我希望你們中的一個能夠指出我的方向。

// Set the default audio file 
    let audioFileURL = directoryURL.URLByAppendingPathComponent("PWAC_" + NSUUID().UUIDString + ".m4a") 

回答

2

一個repeat環就可以了:

var index = 0 
var audioFileURL: NSURL! 

repeat { 
    index += 1 
    audioFileURL = directoryURL.URLByAppendingPathComponent("PWAC_\(index).m4a") 
} while NSFileManager.defaultManager().fileExistsAtPath(audioFileURL.path!) 
+0

這是一種簡單的方法,效果很好。謝謝 – Bill

1

您可以使用NSDefault保持運行ID。即使應用已終止,它也會永久存儲在您的應用中。

例如這裏,我用靜態函數的類:

class FileUtil { 

    let key = "runningId" 

    static func getRunningID() { 
     let prefs = NSUserDefaults.standardUserDefaults() 
     // set initial value if first time 

     if var runningid = prefs.valueForKey(key) as? Int{ 
      print("current id: \(runningid)") 
      // increase by 1 and return 
      runningid += 1 
      // dont forget to save back after increment 
      prefs.setInteger(runningid, forKey: key) 

      return runningid; 
     }else{   
      // not set yet, then set the init value 
      prefs.setInteger(1, forKey: key)   
     } 
    } 
} 

所以在你的控制器可以簡單地調用

let audioFileURL = directoryURL.URLByAppendingPathComponent("PWAC_" + FileUtil. getRunningID() + ".m4a") 
1

每個音頻文件與日期字符串,每次一個唯一的名稱。

let date = NSDate() 

let dateFormatter = NSDateFormatter() 
dateFormatter.dateStyle = .MediumStyle 
dateFormatter.dateFormat = "yyyy-MM-ddHHmmssSSS" 
let string = dateFormatter.stringFromDate(date) 

audioFileURL = directoryURL.URLByAppendingPathComponent("PWAC_\(string).m4a")