2010-09-19 47 views
0
[[NSUserDefaults standardUserDefaults] setObject:myArray forKey:@"myArray"]; 

如果我使自定义对象的数组遵循NSCoding协议,然后做上述工作?我是否必须让自定义类和包含自定义对象数组的视图控制器都符合NSCoding协议或只是自定义类?我需要在某处使用NSKeyedArchiver吗?此代码可以与一组自定义对象一起使用吗?

回答

2

看起来你将需要归档阵列,无论是与NSKeyedArchiverNSArchiver。如果先归档阵列成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代替上述代码中出现的NSArrayOR你可以NSMutableArray *myMutableArray = [myArray mutableCopy]会给你一个NSMutableArray里一起工作。

但随后,嘿,如果你要使它符合NSCoding的麻烦,为什么不只是将其归档到一个文件?

,使我认为你需要使用一个归档的文档是here,这样你可以检查自己。

+0

什么是加载数组的代码? – 2010-09-19 07:05:54

+1

修复了我的答案,显示如何加载。 – 2010-09-20 03:35:29

+0

如果我想使用NSMutableArray会怎么样? – 2010-09-20 07:45:26

相关问题