#iphone #objective-c #ios #nsmutablearray
#iPhone #objective-c #iOS #nsmutablearray
Вопрос:
Я не могу добавлять объекты в простой NSMutableArray. У меня есть ссылка на objective-c рядом со мной, и она работает для простой строки. Но мне нужно добавить реальные объекты. Пожалуйста, скажите мне, что я здесь делаю не так.
Код:
TBXMLElement *hubImage = [TBXML childElementNamed:@"image" parentElement:[TBXML childElementNamed:@"images" parentElement:pieceXML]];
if(hubImage) {
do {
HubPieceImage *tmpImage = [[HubPieceImage alloc] initWithXML:hubImage];
[self.images addObject: tmpImage];
HubPieceImage *tmpImage2 = [self.images lastObject];
NSLog(@"image : %@", tmpImage.asset_url);
NSLog(@"image 2: %@", tmpImage2.asset_url);
} while ((hubImage = hubImage->nextSibling));
}
NSLog(@"count : %i", [self.images count]);
Возвращает это в журнале при циклическом просмотре двух объектов:
image : http://farm6.static.flickr.com/5215/5533190578_4v629a79e5.jpg
image 2: (null)
image : http://farm3.static.flickr.com/2774/5416668522_fdcr19aed3.jpg
image 2: (null)
count : 0
На самом деле массив, кажется, вообще не заполняется (учитывая count: 0)
Спасибо за помощь
Комментарии:
1. Как выглядит реализация self.images?
Ответ №1:
Просто ради удовольствия попробуйте это:
HubPieceImage *tmpImage = [[HubPieceImage alloc] initWithXML:hubImage];
NSAssert(self.images, @"Whoops! self.images is NULL");
[self.images addObject: tmpImage];
Возможно, это ваша проблема! То есть self.images может быть равен нулю.
Ответ №2:
Я нашел проблему!
Я не инициализировал массив таким образом:
self.images = [[NSMutableArray alloc] init];
Комментарии:
1. Вероятно, вы захотите добавить
-autorelease
сообщение, если это сохраненное свойство.2. Не забудьте принять ваш ответ, чтобы люди не думали, что этот вопрос все еще не решен.
Ответ №3:
images = [[NSMutableArray alloc] initWithCapacity:10];
Пожалуйста, убедитесь, что вы вызвали alloc и init перед