NSMutableArray addObject,无法识别的选择器

Jam*_*ght 5 iphone objective-c nsmutablearray

我正在尝试创建数组(Cities)的数组(States).每当我尝试将项目添加到我的City数组时,我都会收到此错误:

'NSInvalidArgumentException',原因:'***+ [NSMutableArray addObject:]:无法识别的选择器发送到类0x303097a0

我的代码如下.它错误的行是

 [currentCities addObject:city];
Run Code Online (Sandbox Code Playgroud)

我确定我有一些内存管理问题,因为我仍然不太了解它.希望有人可以向我解释我的错误.

if (sqlite3_prepare_v2(db, sql, -1, &statement, NULL) == SQLITE_OK){
        // We need to keep track of the state we are on
        NSString *state = @"none";
        NSMutableArray *currentCities = [NSMutableArray alloc];

        // We "step" through the results - once for each row
        while (sqlite3_step(statement) == SQLITE_ROW){
            // The second parameter indicates the column index into the result set.
            int primaryKey = sqlite3_column_int(statement, 0);
            City *city = [[City alloc] initWithPrimaryKey:primaryKey database:db];

            if (![state isEqualToString:city.state])
            {
                // We switched states
                state = [[NSString alloc] initWithString:city.state]; 

                // Add the old array to the states array
                [self.states addObject:currentCities];

                // set up a new cities array
                currentCities = [NSMutableArray init];
            }

            [currentCities addObject:city];
            [city release];
        }
    }
Run Code Online (Sandbox Code Playgroud)

Pet*_*ter 9

线条:

// set up a new cities array
currentCities = [NSMutableArray init];
Run Code Online (Sandbox Code Playgroud)

应该读:

// set up a new cities array
[currentCities init];
Run Code Online (Sandbox Code Playgroud)

应该有希望解决你的问题.您不是初始化数组,而是向类对象发送init消息,该对象不执行任何操作.之后,你的currentCities指针仍未初始化.

更好的方法是删除该行并更改第4行,以便您在一个步骤中分配和初始化所有内容:

NSMutableArray *currentCities = [[NSMutableArray alloc] init];
Run Code Online (Sandbox Code Playgroud)