sus*_*use 4 objective-c nsmutablearray nskeyedarchiver
你能告诉我在Objective-C中存档NSArray自定义对象的语法或示例程序吗?
Jos*_*hua 12
对于存档阵列,您可以使用以下代码:
[[NSUserDefaults standardUserDefaults] setObject:[NSKeyedArchiver archivedDataWithRootObject:myArray] forKey:@"mySavedArray"];
Run Code Online (Sandbox Code Playgroud)
然后,为了在数组中加载自定义对象,您可以使用以下代码:
NSUserDefaults *currentDefaults = [NSUserDefaults standardUserDefaults];
NSData *savedArray = [currentDefaults objectForKey:@"mySavedArray"];
if (savedArray != nil)
{
NSArray *oldArray = [NSKeyedUnarchiver unarchiveObjectWithData:savedArray];
if (oldArray != nil) {
customObjectArray = [[NSMutableArray alloc] initWithArray:oldSavedArray];
} else {
customObjectArray = [[NSMutableArray alloc] init];
}
}
Run Code Online (Sandbox Code Playgroud)
确保检查用户默认值返回的数据不是nil,因为这可能会导致应用程序崩溃.
您需要做的另一件事是使您的自定义对象符合NSCoder协议.你可以使用-(void)encodeWithCoder:(NSCoder *)coder和-(id)initWithCoder:(NSCoder *)coder方法做到这一点.