【问题标题】:special characters in Objective-C plistObjective-C plist中的特殊字符
【发布时间】:2010-07-07 15:35:58
【问题描述】:

我以前没有遇到过这种情况,但我想知道是否可以在 Objective-C / Cocoa Touch 中存储带有特殊字符的 KEYS

由于可以使用 \n 在 NSString 中强制换行,因此我想将一些值存储在 plist 中(并且它们确实需要成为键)。我不想使用 sqlite 的静态数据(好吧,键,值是保存到文件中的 NSNumber)只有大约 20 行,所以它可以是字典或静态数组,我可以保存到磁盘。

这是 .plist alt text http://www.davidhomes.net/plist.png

因此,当我尝试为没有特殊字符的任何键设置值时,一切都很好。但是尝试设置“腿宽\n 或高度”会返回

 *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSCFDictionary setObject:forKey:]: attempt to insert nil key'

作为参数 a NSString = @"Leg Width\n or Height"

感谢任何帮助

最好的问候 大卫

【问题讨论】:

    标签: iphone objective-c plist nsdictionary nsmutabledictionary


    【解决方案1】:

    plist 编辑器中的字符串是 未转义 字符串。因此,我通常更喜欢使用 plist 编辑器将正则表达式保留在 plist 文件中。

    所以,对于条目Leg Width\n or Height,要使用的键是

        [dict objectForKey:@"Leg Width\\n or Height"]
    

    请注意,您在 plist 条目中添加了文字反斜杠。

    【讨论】:

    • 或者在plist编辑器中输入option-return输入换行符。
    • 大家好,感谢两位的回复。我选择了 Johan 的解决方案,因为将 plist 作为纯文本文件打开并按回车比返回我的代码并替换对保存字典的函数的所有调用以使 scape 字符串参数变为非转义更快
    猜你喜欢
    • 1970-01-01
    • 2014-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-14
    相关资源
    最近更新 更多