Mutating方法发送到不可变对象 - iOS

时间:2015-02-20 18:02:13

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

我有一个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;

谢谢你的时间,Dan。

1 个答案:

答案 0 :(得分:0)

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

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