【问题标题】:How to write a BOOL to plist?如何将 BOOL 写入 plist?
【发布时间】:2009-12-19 22:33:49
【问题描述】:

我想为 plist 文件条目分配一个布尔值。我正在执行以下操作:

NSString *aBool = realBoolValue ? @"YES" : @"NO";      
[myplist setValue: aBool forKey:@"boolKey"];
[myplist writeToFile: [NSHomeDirectory() stringByAppendingPathComponent: plistFilePath] atomically:NO];

但任务永远不会接受。我这样做是因为以下不起作用:

[myplist setValue: realBoolValue forKey:@"boolKey"];

它给出了不兼容的类型错误。我做错了什么?

-- 编辑 ---

plistFilePath 被初始化为

plistFilePath = [NSHomeDirectory() stringByAppendingPathComponent: @"Library/Preferences/myfile.plist"];

【问题讨论】:

  • 你没有报告你如何初始化plistFilePath;可能是它没有正确初始化,或者该路径不存在文件。
  • 文件是否从未输出,或者该特定键是否存在特定问题?如果 plistFilePath 是您在上面描述的内容,那么您将拥有一个虚假目录,因为您尝试附加 NSHomeDirectory 两次。另外,目录存在吗?
  • 这正是问题所在。谢谢。
  • 你最终会写 plist 吗? [myplist writeToFile:plistFilePath atomically:YES];

标签: iphone objective-c cocoa-touch plist


【解决方案1】:

您可以将其包装在 NSNumber 对象中:

  [NSNumber numberWithBool:yourBool]

从 plist 读回值时使用 [NSNumber boolValue]。

【讨论】:

  • 谢谢。这进行了正确的转换,但该值仍然没有保存到 plist 中。路径是正确的。我在模拟器上的 Xcode 中运行它。你有什么想法可能是错的吗?如果路径或键名不正确,它应该会抛出错误吗?
  • 是的 - 它是一个 NSMutableDictionary。
【解决方案2】:
[NSNumber numberWithBool:yourBool]

如果这样做,您将在拨打objectForKey@"boolKey" 时收到一个号码。 但是如果你在 plist 文件中添加 key 的 bool,你会得到一个 NSCFBoolen

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    相关资源
    最近更新 更多