ios - 与 NSUserDefaults 和 NSArray 交互时崩溃

标签 ios objective-c crash nsmutablearray

我有一个 NSMutableArray,我在其中添加目标并存储在用户默认值中,但在添加时崩溃了。

 if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bssidObserverArray"]) {
        bssidObserverArray = [[NSUserDefaults standardUserDefaults] objectForKey:@"bssidObserverArray"];
    }

   if (bssidObserverArray.count > 0) {
        if (![bssidObserverArray containsObject:vendorID]) {
            NSLog(@"bssidObserverArray %@",bssidObserverArray);
            // In this line app is getting crashed
                [bssidObserverArray addObject:vendorID];
                [[NSUserDefaults standardUserDefaults] setObject:bssidObserverArray forKey:@"bssidObserverArray"];

        }
    }else{
        [bssidObserverArray addObject:vendorID];
        [[NSUserDefaults standardUserDefaults] setObject:bssidObserverArray forKey:@"bssidObserverArray"];
    }

任何建议都会更有帮助。

最佳答案

假设bssidObserverArray是NSMutable数组,那么问题就在这里。

if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bssidObserverArray"]) {
        bssidObserverArray = [[NSUserDefaults standardUserDefaults] objectForKey:@"bssidObserverArray"];
    }

因为 NSUserdefaults 返回不可变。你可以这样做

if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bssidObserverArray"]) {
        NSArray *someArray = [[NSUserDefaults standardUserDefaults] objectForKey:@"bssidObserverArray"];
        bssidObserverArray = [someArray mutableCopy];

    }

关于ios - 与 NSUserDefaults 和 NSArray 交互时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57069284/

相关文章:

android - Android无法更改按钮文字

ios - Segues 和 viewDidLoad/viewDidUnload 方法

javascript - iOS 混合应用程序 - Google map API 错误 : RefererNotAllowedMapError

ios - 需要从 URL 设置图像而不会有任何闪烁。阅读描述以了解完整的场景

objective-c - 为表格 View (UITableView)绘制自定义单元格,更改颜色和分隔符颜色和宽度

配置服务器问题后 MongoDB 超时

android - Sinch 视频通话挂断 android 崩溃

ios - Objective-C 自定义 UITableView 类不加载

ios - 如何快速显示数组的所有元素?

objective-c - 带前导零的 NSDateFormater