如何将类对象数组保存到Plist中(Iphone开发)

时间:2011-10-06 05:30:50

标签: iphone objective-c xcode ios4 iphone-sdk-3.0

我有一个问题涉及将一组Class对象保存到plist然后将其取回。

例如,我有一个带有两个Nsstring和一些int值的类“A”。

我有一组A类对象。

如何将此数组保存到plist中。

我可以完成将一个简单的数组(字符串数组)存储到Plist中。没有错误。

但是当我存储这个“对象阵列”时,它无法完成。

先谢谢。

3 个答案:

答案 0 :(得分:4)

首先将NSArray转换为给定here的NSDictionary。

然后使用NSDictionarywriteToFile:atomically:将其存储为Plist。

为此,您的班级必须符合NSCoding协议。

或者,您可以将NSArray本身直接写入plist而不转换为NSDictionary。但无论如何,该类应该符合NSCoding协议。

答案 1 :(得分:1)

正确指出类变量的.plist路径

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"patientList.plist"];
[myPatients writeToFile:path atomically:YES];

使用以上内容我希望这将是有用的

答案 2 :(得分:1)

您无法将对象保存到Plists。它永远不会工作,你只能将内部变量保存到plist。要保存对象,首先需要使您的类符合NSCoding。这是解释它的一个很好的链接http://samsoff.es/posts/archiving-objective-c-objects-with-nscoding但是它没有提到对象中的对象,但它基本上只是另一个层次。您需要确保所保存的对象中的任何对象都符合NSCoding标准,一直到链。然后你需要使用NSKeyedArchiver来保存它们。我写了一个很好的经理类,只要您的对象符合NSCoding,它就会为您完成所有这些工作。它可以在这里https://github.com/caranicas/Save-Manager享受!