0
[[NSUserDefaults standardUserDefaults] setObject:myArray forKey:@"myArray"];
如果我使自定义对象的数组遵循NSCoding协议,然后做上述工作?我是否必须让自定义类和包含自定义对象数组的视图控制器都符合NSCoding协议或只是自定义类?我需要在某处使用NSKeyedArchiver吗?此代码可以与一组自定义对象一起使用吗?
[[NSUserDefaults standardUserDefaults] setObject:myArray forKey:@"myArray"];
如果我使自定义对象的数组遵循NSCoding协议,然后做上述工作?我是否必须让自定义类和包含自定义对象数组的视图控制器都符合NSCoding协议或只是自定义类?我需要在某处使用NSKeyedArchiver吗?此代码可以与一组自定义对象一起使用吗?
看起来你将需要归档阵列,无论是与NSKeyedArchiver
或NSArchiver
。如果先归档阵列成NSData对象:
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:myArray];
您可以将该数据则存储在NSUserDefaults的像这样:
[[NSUserDefaults standardUserDefaults] setObject:data forKey:@"myArray"];
要加载阵列,使用:
NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:@"myArray"];
NSArray *myArray = [NSKeyedUnarchiver unarchiveObjectWithData:data];
如果你想使用NSMutableArray,那么只需用NSMutableArray
代替上述代码中出现的NSArray
。 OR你可以NSMutableArray *myMutableArray = [myArray mutableCopy]
会给你一个NSMutableArray里一起工作。
但随后,嘿,如果你要使它符合NSCoding的麻烦,为什么不只是将其归档到一个文件?
,使我认为你需要使用一个归档的文档是here,这样你可以检查自己。
什么是加载数组的代码? – 2010-09-19 07:05:54
修复了我的答案,显示如何加载。 – 2010-09-20 03:35:29
如果我想使用NSMutableArray会怎么样? – 2010-09-20 07:45:26