PLIST未更新iOS项目(SWIFT 3.0)



我需要坚持5个布尔值,以跟踪用户在应用中的进度。我认为为此目的使用核心日期是过度的,因此我决定使用属性列表(PLIST)。

在我的应用中,有ToolTipData.plist我存储5个布尔值。默认的布尔值是错误的。我想在某些场合将值更改为真。

这是我如何更新字典中的值并写信给PLIST:

  static func updatePList() {
        if let path = Bundle.main.path(forResource: "TooltipViewData", ofType: "plist") {
            let dic = NSMutableDictionary(contentsOfFile: path)
            dic?.setValue(NSNumber.init(booleanLiteral: true), forKey: "firstToolTipViewSeen")
            if dic?.write(toFile: path, atomically: true) == true {
                print("saved")
            } else {
                print("not saved")
            }
            print("reading updated plist: (NSMutableDictionary(contentsOfFile: path))")
        }
    }

结果,我得到saved打印和

reading updated plist: Optional({
    firstToolTipViewSeen = 1;
    secondToolTipViewSeen = 0;
    thirdToolTipViewSeen = 0;
})

然后,我单击应用程序中的PLIST文件,然后发现 firstToolTipViewSeen的值仍然是NO,即使我通过上述方法更新为YES。PLIST文件不应该更新还是我做错了什么?

谢谢

应用程序包中的文件无法写入。

您应该在Library目录中创建PLIST,然后从那里进行修改。

这是创建文件的方法:

var appDir = NSSearchPathForDirectoriesInDomains(.LibraryDirectory, .UserDomainMask, true)
let plistURL = documentDirectoryURL.URLByAppendingPathComponent("TooltipViewData.plist")
do {
    let fileExists = try plistURL.checkResourceIsReachable()
    if !fileExists {
        // create the plist, or move the plist from the main app bundle to plistURL
    }
} catch let error as NSError {
    print(error)
}

然后,您可以像以前一样保存给PLIST,这次使用URL plistURL

只是一个建议:将用户的预订保存到NSUserDefaults

最新更新