我正在为MVC构建一个模型,我遇到了一个异常,与Apple文档 相反"NSUserDefaults返回的值是不可变的,即使你将一个可变对象设置为值." ,[[NSUserDefaults standardUserDefaults] objectForKey:@"key"]返回一个可变数组.
我在Xcode 4D199中为iOS 创建了一个空的应用程序来重新创建条件,并确认它对我项目中的其他因素不负责任.
我正在设置NSMutableArray,如下所示:
- (void)setupTest
{
NSMutableArray *mutableArray = [[NSMutableArray alloc] init];
[mutableArray addObject:@"one"];
[mutableArray addObject:@"two"];
[[NSUserDefaults standardUserDefaults] setObject:mutableArray forKey:@"mutableArray_01"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
Run Code Online (Sandbox Code Playgroud)
而且,我得到的对象如图所示:
- (void)checkTest
{
NSMutableArray *mutableArrayInCheck = nil;
id whatIsThis = [[NSUserDefaults standardUserDefaults] objectForKey:@"mutableArray_01"];
if([whatIsThis isKindOfClass:[NSMutableArray class]])
{
NSLog(@"The array is mutable.");
mutableArrayInCheck = (NSMutableArray *)whatIsThis;
}
if([whatIsThis isKindOfClass:[NSArray class]])
{
NSLog(@"The array is immutable.");
}
if ([whatIsThis isMemberOfClass:[NSMutableArray class]])
{
NSLog(@"The array is …Run Code Online (Sandbox Code Playgroud)