【问题标题】:Mutating method sent to immutable object - iOS [duplicate]发送到不可变对象的变异方法 - iOS [重复]
【发布时间】:2015-02-20 18:02:13
【问题描述】:

我有一个 NSMutableArray,我正在尝试使用 insertObjectAtIndex 方法,但它不起作用。似乎认为我正在尝试使用不可变数组做一些可变的事情.....但我使用的是 NS ..... MUTABLE.... 数组。那么地球可能有什么问题呢??

这是我的代码:

        if ([dataArray count] == 0) {

            // Initialise the audio arrays.
            dataArray = [[NSMutableArray alloc] init];

            // Now add the data to the array.
            [dataArray addObject:@"test 1"];
        }

        else {
            [dataArray insertObject:@"test 2" atIndex:0];
        }

        NSLog(@"d in: %@", dataArray);

dataArray 在头文件中定义如下:

NSMutableArray *dataArray;

感谢您抽出宝贵时间,丹。

【问题讨论】:

  • 告诉我们你在哪里定义dataArray
  • @vikingosegundo 我已经为你更新了我的答案。
  • 所以基本上你没有发布你的真实代码并期望人们猜出问题所在。

标签: ios objective-c cocoa-touch nsmutablearray nsarray


【解决方案1】:

对不起大家,我刚刚发现出了什么问题。我确实对我的问题中的代码进行了一些编辑,但基本上我实际上填充 NSMutableArray 的是一个存储在 NSUserDefault 中的数组(当然它只返回不可变数组)。

所以即使我使用 NSMutableArray 来存储数据,它仍然具有不可变的内容。为了解决这个问题,我最终使用“mutableCopy”iOS 方法来获取 NSUserDefaults 数组内容的可变副本。

【讨论】:

    猜你喜欢
    • 2011-08-13
    • 2016-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多