读取写入阵列数据以使plist不起作用

时间:2016-04-23 08:44:04

标签: ios plist

func readWriteData(){

        let paths = NSSearchPathForDirectoriesInDomains(.CachesDirectory, .UserDomainMask, true)
        let cachePath = paths.first
        //        let bundleName = NSBundle.mainBundle().infoDictionary?["CFBundleVersion"] as? String
        let filePath = NSURL(fileURLWithPath: cachePath!).URLByAppendingPathComponent("cachedProducts.plist").path
        var isDir : ObjCBool = false
        var error: NSError?
        if NSFileManager.defaultManager().fileExistsAtPath(filePath!, isDirectory: &isDir) {
            var plistArray = NSArray(contentsOfFile: filePath!)
            print(plistArray)//retrieving stored data


        }else {
            do {
                try NSFileManager.defaultManager().createDirectoryAtPath(filePath!, withIntermediateDirectories: false, attributes: nil)
                var cachedArray = [AnyObject]()
                cachedArray.append("Harsh")
                let cachedProductarray : NSArray = cachedArray
                cachedProductarray.writeToFile(filePath!, atomically: true)
                //Storing data to plist


            } catch let error as NSError {
                NSLog("\(error.localizedDescription)")
            }
        }
}

当我尝试打印plistArray时,它返回nil。请帮我解决这个问题。我使用cachesDirectory和Document Directory尝试了这个,它与两个

的情况相同

1 个答案:

答案 0 :(得分:1)

缓存目录应该在cachePath创建,而不是filePath

我建议将writeToFileNSArray {{1}结合使用,而不是使用NSPropertyListSerialization的非常原始的NSData方法。 (更好的writeToFile:options:error)方法来获取有意义的错误消息。