Objective c 此代码可以与自定义对象数组一起使用吗?

Objective c 此代码可以与自定义对象数组一起使用吗?,objective-c,arrays,cocoa-touch,nskeyedarchiver,nscoding,Objective C,Arrays,Cocoa Touch,Nskeyedarchiver,Nscoding,如果我使一个自定义对象数组符合NSCoding协议,那么上面的方法有效吗?我是否必须使保存自定义对象数组的自定义类和视图控制器都符合NSCoding协议,还是仅使自定义类符合?我必须在某个地方使用NSKeyedArchiver吗?看起来您需要使用NSKeyedArchiver或NSArchiver对阵列进行归档。如果首先将阵列归档到NSData对象中: [[NSUserDefaults standardUserDefaults] setObject:myArray forKey:@"myArra

如果我使一个自定义对象数组符合NSCoding协议,那么上面的方法有效吗?我是否必须使保存自定义对象数组的自定义类和视图控制器都符合NSCoding协议,还是仅使自定义类符合?我必须在某个地方使用NSKeyedArchiver吗?

看起来您需要使用
NSKeyedArchiver
NSArchiver
对阵列进行归档。如果首先将阵列归档到NSData对象中:

[[NSUserDefaults standardUserDefaults] setObject:myArray forKey:@"myArray"];
然后,您可以将该数据存储在NSUserDefaults中,如下所示:

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:myArray];
要加载阵列,请使用:

[[NSUserDefaults standardUserDefaults] setObject:data forKey:@"myArray"];
如果要使用NSMutableArray,只需将上述代码中出现的任何
NSArray
替换为
NSMutableArray
您只需
NSMutableArray*myMutableArray=[myArray mutableCopy]
将为您提供一个NSMutableArray

但是,如果你想让它符合NSCoding,为什么不把它归档到一个文件中呢


让我认为您需要使用archiver的文档是为了让您自己检查。

如果我想使用NSMutableArray怎么办?请注意,如果必须对数组中的对象进行存档,则这些对象必须符合
NSCoding
协议。
NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:@"myArray"];
NSArray *myArray = [NSKeyedUnarchiver unarchiveObjectWithData:data];