Cocoa 在其 JSON 支持中仅支持这些类型。
NSNumber (integer, float, boolean)
NSString
NSArray
NSDictionary
无论您想保存/加载什么,您都应该组织您的数据以仅使用这些类型。不支持直接使用NSValue
,所以你需要做这样的事情。
NSDictionary* point = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithFloat:444f],
@"x",
[NSNumber numberWithFloat:555f],
@"y",
nil];
并保存字典。此外,您还可以使用主要为Property List设计的等效的新文字语法。
NSDictionary* point = @{ @"x" : @444f, @"y": @555f };
这相当于上面的例子。
CAVEAT :当您将数据保存到 JSON 或Property List时,所有键都NSDictionary
必须是。NSString
考虑使用属性列表
如果您只针对 iOS,属性列表始终是保存/加载少量变量的正确和更好的选择。Xcode 也会给你更好的编辑器。
在 Cocoa 中对 JSON 的支持只是Property List的一个子集,并且大多相似。因此,首先查看属性列表,然后您将能够轻松地使用 PLIST 或 JSON。(这就是为什么 Cocoa 中没有 JSON 的指导文档的原因)
背景图片
可以将图像数据保存在 JSON 或 Property List 中,但通常不建议这样做。因为 JSON 或 PLIST 需要立即加载。这意味着所有文件内容都必须加载到内存中。如果您将多个图像放在 JSON 或 PLIST 文件中,它会很容易变大到数兆字节。而且iOS设备没有太多内存,所以你的程序可能会崩溃。
因此,建议仅将图像文件的路径存储在 JSON 或 PLIST 文件中 - 正如@JoelMartinez 所指出的那样 - 并直接从路径加载每个图像文件。