我正在以这种方式读取和写入 NSuserdefults 数组:
indexDelete = button.tag;
NSUserDefaults *currentDefaults = [NSUserDefaults standardUserDefaults];
NSData *dataRepresentingSavedArray = [currentDefaults objectForKey:@"save"];
if (dataRepresentingSavedArray != nil)
{
NSArray *oldSavedArray = [NSKeyedUnarchiver unarchiveObjectWithData:dataRepresentingSavedArray];
if (oldSavedArray != nil)
myIntegers = [[NSMutableArray alloc] initWithArray:oldSavedArray];
else
myIntegers = [[NSMutableArray alloc] init];
}
[myIntegers addObject:[NSNumber numberWithInteger:indexDelete]];
NSLog (@"Array myIntegers: %@", myIntegers);
[[NSUserDefaults standardUserDefaults] setObject:[NSKeyedArchiver archivedDataWithRootObject:myIntegers] forKey:@"save"];
如果我坚持下去,一切都会很好:
myIntegers = [[NSMutableArray alloc] init];
括号之外,因为即使数据在那里,也没有正确写入或读取:
我收到此错误:-[NSKeyedUnarchiver initForReadingWithData:]:数据为 NULL
我做错了什么?
最佳答案
改变这个:
[[NSUserDefaults standardUserDefaults] setObject:[NSKeyedArchiver archivedDataWithRootObject:myIntegers] forKey:@"save"];
到
[[NSUserDefaults standardUserDefaults] setObject:myIntegers forKey:@"save"];
如果 myIntegers 将来不会发生变异(更改)。如果要更改,则使用:
[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithArray:myIntegers] forKey:@"save"];
类描述中记录了在用户默认值中保存数组和字典的功能。
关于objective-c - NSMutableArray 到 NSUserDefults 不保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12070871/