【问题标题】:NSUserDefaults setValue: deletes my plist. What's happening?NSUserDefaults setValue:删除我的 plist。发生了什么?
【发布时间】:2011-10-20 21:27:50
【问题描述】:

不知何故,下面提到的代码似乎删除了我的~/Library/Preferences/NAME.PRODUCT.plist

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setValue:NO forKey:@"ViewFirstShown"];
    [defaults synchronize];

我可以在调用这些行之前确认 plist 文件存在。但运行上述代码后 plist 文件立即消失。

我认为synchronise 会立即将值写入disk。我也试着等了一会儿,但 plist 并没有重新出现。

我错过了什么吗?

提前致谢。

【问题讨论】:

    标签: ios cocoa-touch nsuserdefaults settings.bundle


    【解决方案1】:

    这里没有足够的信息来真正回答您的问题。

    在执行上述代码时,“ViewFirstShown”键是首选项 plist 中的唯一键吗?如果是这样,那么 -setValue:forKey: 调用将删除首选项中的最后一个键,这将删除首选项 plist。

    要注意的另一件事是,您使用的是-[NSUserDefaults setValue:forKey:],它采用id 作为值。因为NO0L 并且实际上是nil,所以您正在删除此处的任何值。您可能想改用-[NSUserDefaults setBool:forKey:]

    【讨论】:

    • 谢谢!事情真的是这样的。 ViewFirstShown 是 plist 中的唯一键。我把它改成了setBool,一切正常!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-24
    • 1970-01-01
    相关资源
    最近更新 更多