Swift - 使用NSSearchPathForDirectoriesInDomains在目录中存储数据,但目录总是在变化?

时间:2015-03-08 04:33:03

标签: swift nsdocumentdirectory

我有一个录音机应用程序,其中录制的声音存储如下:

let dirPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory,.UserDomainMask,true)[0] as String  
    var pathArray = [dirPath, recordingName]
    let filePath = NSURL.fileURLWithPathComponents(pathArray)

所有文件路径URL都存储在一个数组中(放入NSUserDefaults)以便于访问。

我可以播放这些文件,如果他们在同一次播放时播放文件,但是重新打开和关闭模拟器将导致文件路径错误(因为app-id文件夹〜/ Library / Developer / CoreSimulator / Devices / Device-ID / data / Container / Data / Application / app-id-folder /Documents/filename.wav将更改名称)。如何在每次运行应用程序时更改包含文件URL的数组以获得更新的app-id文件夹名称? (目前它只是一个字符串数组,必要时转换为NSURL类型)。或者甚至更简单,是否可以保存到用户主目录或您不需要处理更改文件夹名称的地方?

1 个答案:

答案 0 :(得分:3)

我通过创建一个仅包含文件名的NSUserDefaults数组(如[audio1.wav,audio2.wav])并在每个新的viewdidload上调用NSSearchPathForDirectoriesInDomains,然后将两者合并为一个新字符串来解决它。像这样(下面的代码会调用数组中的第二个音频文件):

let dirPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory,.UserDomainMask,true)[0] as String
var filesNamesWithWav = defaults?.objectForKey("filesNamesWithWav") as NSArray
var newpath = "\(dirPath)/" + "\(filesNamesWithWav[1])"