关于将布尔文件写入 plist

Posted

技术标签:

【中文标题】关于将布尔文件写入 plist【英文标题】:About write boolean file to the plist 【发布时间】:2012-04-23 09:17:37 【问题描述】:

我有一个关于将布尔值写入 plist 的问题。 有线的东西是 plist 在写入和读取之前的目录是完全一样的,但我不能写入它的布尔值。我怎么解决这个问题? 顺便说一句:我在 iPhone 模拟器中得到了写入结果,但在真正的 iPhone 调试中失败了。

//--- CODE HERE ---//
[ContentList objectAtIndex: paramSender.tag] setValue: [NSNumber numberWithBool: TRUE] forKey: BooleanKey]; // set object boolean value to be ture;
[ContentList writeToFile: self.plistPath atomically: YES]; // update the plist
NSMutableArray *tmp = [[NSMutableArray alloc] initWithContentsOfFile: self.plistPath]; // get the content from the updated plist
NSLog(@"the bool value is %@", [[ContentList objectAtIndex: paramSender.tag] objectForKey: BooleanKey]);
NSLog(@"After update boolValue is %@", [[tmp objectAtIndex: paramSender.tag] objectForKey: BooleanKey]);

//--- OUTPUT IN NSLOG ---// 
2012-04-23 18:09:12.164 iPhoneTips[151:707] the bool value is 1
2012-04-23 18:09:12.167 iPhoneTips[151:707] After update boolValue is 0  

//--- FINISH ---//

【问题讨论】:

【参考方案1】:

试试这个:

NSLog(@"After update boolValue is %d", [[[tmp objectAtIndex: paramSender.tag] objectForKey: BooleanKey] boolValue]);

【讨论】:

不,在真正的 iphone 中仍然是相同的结果。 我想知道为什么模拟器和真实 iPhone 的结果不同【参考方案2】:

试过了吗?

[[ContentList objectAtIndex: paramSender.tag] setBool:YES forKey: BooleanKey];

【讨论】:

好吧。我不认为这里的问题。由于contentlist可以改变对象的boolean值,但是不能写入原来的plist...不过,还是提前谢谢~~【参考方案3】:

终于知道plist的原理了。

bundle 中的 plist 是只读的。如果要以编程方式将数据写入 plist,则必须将 plist 从 bundle 移动到文档目录,然后无论写入还是读取都可以编辑数据...

【讨论】:

以上是关于关于将布尔文件写入 plist的主要内容,如果未能解决你的问题,请参考以下文章

如何将本地保存的 xml 文件保存到 .plist 文件中

将 NSArray 写入 plist 文件

Swift 3:无法将数据写入 plist 文件

将 JSON 响应写入 .plist 文件

如何将 NSMutableDictionary 写入 Plist

尝试写入 .plist 文件,但无法正常工作