从 Swift 中的文件加载 NSMutableArray

Load a NSMutableArray from a file in Swift

我正在将 NSMutableArray 成功保存到文件,但无法加载此数组。

这是我的 loadVocab() 方法

func loadVocab() {
    let pathsArray = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)
    let documentsDirectory = pathsArray[0] as String
    let vocabPath = documentsDirectory.stringByAppendingPathComponent("vocab")

    if NSFileManager.defaultManager().fileExistsAtPath(vocabPath){
        self.myWords = NSMutableArray(contentsOfFile: vocabPath)

    }
}

这是我的保存方法

func saveVocab() {
    let pathsArray = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)
    let documentsDirectory = pathsArray[0] as String
    let savePath = documentsDirectory.stringByAppendingPathComponent("vocab")
    self.myWords.writeToFile(savePath, atomically: true)
}

加载函数不起作用,我得到一个空的可变数组。保存功能工作正常。 感谢您的帮助。

我想我在这里发现了问题,您没有使用文件扩展名保存数组,它只是指向目录。

let savePath = documentsDirectory

让文件路径 = 保存路径 + "vocab.data" 现在保存文件路径

将文件数据检索到数组时,您应该做同样的事情。

我决定使用 Parse.com 缓存策略作为两个服务器连接之间的本地存储。

这是我使用 Parse 查询的方式:

self.myData = NSMutableArray()
    var query = PFQuery(className:"entries")
    query.cachePolicy = kPFCachePolicyCacheThenNetwork
    query.maxCacheAge = 60 * 60 * 24 // 24h maximum cache
    query.limit = self.limit
    query.orderByDescending("createdAt")

我不需要将我的可变数组保存到文件中,因为将使用缓存。更多信息在这里 https://www.parse.com/docs/ios_guide#top/iOS