这种错误的原因是插入了不识别的数据类型,或数据结构内包含了除NSUserDefault支持的数据类型。NSUserDefaults支持的数据类型有NSString、 NSNumber、NSDate、 NSArray、NSDictionary、BOOL、NSInteger、NSFloat等系统定义的数据类型。
即使你将model再次封装成字典:
[[NSUserDefaults standardUserDefaults] setValue:@{@"user": user} forKey:@"user"];
这样依然会崩溃。
自定义的类型需要转成NSData再存入。
网友评论
for (TW_FriendModel *friend in friends) {
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:friend];
[dataArr addObject:data];
}
NSUserDefaults *userdafault = [NSUserDefaults standardUserDefaults];
[userdafault setObject:[NSArray arrayWithArray:dataArr] forKey:@"friends"];
[userdafault synchronize];
参考:https://stackoverflow.com/questions/7684611/what-is-nsarrayi-and-nsarraym-how-to-convert-to-nsarray