Проблема добавления пользовательских объектов в Mutable Array - PullRequest
0 голосов
/ 16 ноября 2010

быстрый вопрос относительно массива в xcode. У меня есть следующий код, который должен пройти через массив строк, которые он получил через php и JSON, и обрезать эти строки в пользовательский объект со строками в виде ivars для объекта, а затем добавить этот объект в новый массив :

for (int i = 0; i<[list count]; i++) {
        Article *article = [[Article alloc] init]; //creates custom object
        article.uid = [[list objectAtIndex:i] objectAtIndex:0];
        article.title = [[list objectAtIndex:i] objectAtIndex:1]; //adds string as ivars
        article.description = [[list objectAtIndex:i] objectAtIndex:2];
        articleArray = [[NSMutableArray alloc] init]; //inits the new array
        [articleArray addObject:article]; //should add the object but seems to fail
        [article release]; //releases the object
        NSLog(@"%@", article.description);
    }
    NSLog(@"%d", [articleArray count]);
    NSLog([articleArray description]);
}

Код возвращает правильные значения, используя NSLog(@"%@", article.description);, но не правильную длину для нового массива, и он добавляет только одно значение в массив, который является строкой для article.description, что не имеет смысла для меня. Массив списка содержит 2 элемента, каждый из которых сам по себе является массивом, содержащим строки.

1 Ответ

6 голосов
/ 16 ноября 2010

Вы воссоздаете articleArray в каждом цикле. Объявите это снаружи, и это будет работать:

NSMutableArray *articleArray = [[NSMutableArray alloc] init]; //inits the new array
for (int i = 0; i<[list count]; i++) {
        Article *article = [[Article alloc] init]; //creates custom object
        article.uid = [[list objectAtIndex:i] objectAtIndex:0];
        article.title = [[list objectAtIndex:i] objectAtIndex:1]; //adds string as ivars
        article.description = [[list objectAtIndex:i] objectAtIndex:2];
        [articleArray addObject:article]; //should add the object but seems to fail
        [article release]; //releases the object
        NSLog(@"%@", article.description);
    }
    NSLog(@"%d", [articleArray count]);
    NSLog([articleArray description]);
}

Вы также можете использовать вместо этого более приятный синтаксис (NSArray * listElement in list).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...