将自定义对象存储到NSMutableArray,然后将此NSMutableArray存储到NSUserDefaults

时间:2011-09-18 05:04:16

标签: objective-c

我想在NSMutableArray中存储一些自定义对象,然后将此NSMutableArray存储到NSUserDefaults。自定义对象如下所示:

@interface myCustomClass:NSObject
{
    NSString *string1;
    NSString *string2;
    NSArray *array;
    NSURL   *URL;
}
@end

我检查了开发文档,并了解到NSUserDefaults仅支持某些类型,如NSData,NSDate,NSString,NSArray,NSDictionary。我已经搜索了一段时间我的问题的答案,但还没有找到解决方案。有谁请让我知道如何将上面列出的自定义对象保存到NSMutableArray然后将此数组存储到NSUserDefaults,以及如何检索这个可变数组?非常感谢。

1 个答案:

答案 0 :(得分:3)

可以使用NSUserDefaults缓存的对象必须是属性列表。如果您真的想使用NSUserDefaults来缓存这些,那么您必须首先实现一个方法,该方法返回重新创建对象所需的所有属性。这将意味着对象的属性列表表示,例如NSDictionary。考虑序列化/反序列化。对于您的情况,您必须确保您的NSArray ivar仅包含属性列表。如果只能使用NSString重新创建NSURL,则保存NSString。你看它变得越来越复杂了!

更简单的方法是在自定义类中实现NSCoding协议,并使用NSKeyedArchiver和NSKeyedUnarchiver保存/检索对象或NSArray对象。要实现NSCoding协议,您必须只实现两个方法initWithCoder:encodeWithCoder: