Отображение массива объектов - PullRequest
2 голосов
/ 17 февраля 2011

Попытка заполнить пользовательский из xml, xml уже проанализирован.

for (Row* fighter in parser.fighter) 
{   
    NSLog(@"%@",fighter.title);
    NSLog(@"%@",fighter.info);
    NSLog(@"%@",fighter.img);
    NSLog(@"=========");
}

распечатывает:

title0
info0
img0
=========
title1
info1
img1
=========
title2
info2
img2
=========
title3
info3
img3
=========

Я пытаюсь поместить проанализированные данные в массив, который имеет 2 столбца

ех. [[figher0, fighter1], [fighter2, fighter3]]

NSMutableArray *holderArray = [NSMutableArray array];
for (NSInteger i = 1; i < [parser.fighter count]; i+=2) {
    id object1 = [parser.fighter objectAtIndex:i-1];
    id object2 = [parser.fighter objectAtIndex:i];
    [holderArray addObject:[NSArray arrayWithObjects:object1, object2, nil]];
}

for (int j=0; j< [holderArray count]; j++) {
    NSLog(@"%d :: %@",j, [holderArray objectAtIndex:j]);
    NSLog(@"=====",);   
}

распечатывает:

"<Row: 0x600c5f0>",
"<Row: 0x600c680>"
=========
"<Row: 0x600c640>",
"<Row: 0x6106f60>"
=========
"<Row: 0x600ee90>",
"<Row: 0x600eed0>"
=========
"<Row: 0x600ec60>",
"<Row: 0x600f0f0>"
=========

Как мне получить доступ к данным, например, figher.title, fighter.info и fighter.img?

спасибо

Ответы [ 3 ]

0 голосов
/ 18 февраля 2011

Попробуйте использовать: -

NSMutableArray *holderArray = [NSMutableArray array];
for (NSInteger i = 1; i < [parser.fighter count]; i+=2) {
id object1 = [parser.fighter objectAtIndex:i-1];
id object2 = [parser.fighter objectAtIndex:i];
[holderArray addObject:[NSArray arrayWithObjects:object1, object2, nil]];
}

for (int j=0; j< [holderArray count]; j++) {
NSLog(@"%@ :: %@",[holderArray objectAtIndex:j].title, [holderArray objectAtIndex:j].info);
NSLog(@"=====",);   
}
0 голосов
/ 18 февраля 2011

Я думаю, вам нужно сделать это

for (int j=0; j< [holderArray count]; j++) {
    NSLog(@"%d :: title = %@, info = %@",j, [holderArray objectAtIndex:j].title, [holderArray objectAtIndex:j].info);
    NSLog(@"=====",);   
}
0 голосов
/ 17 февраля 2011

В вашем последнем цикле вы пытаетесь напечатать массив из двух бойцов. Массив печатается только как шестнадцатеричный указатель. Что вам нужно сделать, это извлечь элементы вашего внутреннего массива и собрать их в строку:

for (int j=0; j< [rootArray count]; j++) {
    NSMutableString rowString = [NSMutableString stringWithCapacity:100];
    [rowString appendFormat:@"[ "];
    for( Row* fighter in [rootArray objectAtIndex:j] ) {
       [rowString appendFormat:@"[%@, %@] ", fighter.title, fighter.info];
    }

    [rowString appendFormat:@"]"];
    NSLog(@"%d :: %@",j, rowString);
    if( j > 0 && j % 2 == 0 ) {
       NSLog(@"=====");   
    }
}

У меня нет под рукой компилятора, поэтому, пожалуйста, проверьте синтаксические ошибки в моем примере самостоятельно; -).

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