Objective-C plist 中的特殊字符

发布于 2024-09-08 08:54:56 字数 652 浏览 5 评论 0原文

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

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

这是.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 = @“腿宽\n或高度”

任何帮助表示感谢

最好的问候 大卫

I had not run into this before but I wanted to know if it's possible to store KEYS with special characters in Objective-C / Cocoa Touch

Since one can force a line break in a NSString with \n I wanted to store some values in a plist (and they do need to be the keys). It's just about 20 lines to static data (well, the keys, the values are NSNumbers that get saved to a file) for which I don't want to use sqlite, so it's either a dictionary or a static array that I can save to disk.

Here is the .plist
alt text http://www.davidhomes.net/plist.png

So when I try to set a value for any key without special characters all is fine. But trying to set for, say, 'Leg Width\n or Height' returns

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

being the argument a NSString = @"Leg Width\n or Height"

Any help is appreciated

Best regards
david

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

你在看孤独的风景 2024-09-15 08:54:56

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

因此,对于条目 Leg Width\n 或 Height,要使用的键是

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

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

The string in the plist editor is the unescaped string. So, I often prefer to keep regular expressions in the plist file, using the plist editor.

So, for the entry Leg Width\n or Height, the key to be used is

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

Note that you put a literal backslash in the plist entry.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文