objective-c - NSMutableArray 到 NSUserDefults 不保存

标签 objective-c ios cocoa-touch

我正在以这种方式读取和写入 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/

相关文章:

ios - 不断收到 "Unbalanced calls to begin/end appearance transitions for <ViewController>"错误

objective-c - 为什么 performSegueWithIdentifier 在 vi​​ewDidLoad 中不起作用?

iOS顶部导航栏设置标题颜色

ios - Swift 类变量崩溃 Interface Builder 实时渲染

iphone - 如何以编程方式截取 iPhone 的屏幕截图?

iphone - UIWindow 和 UIView 之间的区别

objective-c - 在 xcode 中找不到 DTCoreText.h 文件

objective-c - 如何在直线的路径中找到一个点

iphone - 咨询 : Should I consider [NSManagedObjectContext reset] in low memory conditions?

iphone - 将 NSMutableURLRequest 超时设置为自定义时间