小编Jin*_*Jin的帖子

NSUserDefaults正在返回一个可变数组

我正在为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)

objective-c foundation ios

6
推荐指数
1
解决办法
1576
查看次数

标签 统计

foundation ×1

ios ×1

objective-c ×1