для петли в iPhone - PullRequest
       6

для петли в iPhone

0 голосов
/ 10 июня 2010
nodes = [doc nodesForXPath:@"//user" error: nil];
            for (CXMLElement *node in nodes) {
                [itemPreDict setObject:[[node attributeForName:@"name"] stringValue] forKey:@"name"];
                [itemPreDict setObject:[[node attributeForName:@"gender"] stringValue] forKey:@"gender"];
                [itemPreDict setObject:[[node attributeForName:@"dob"] stringValue] forKey:@"dob"];

                [itemDict setObject:itemPreDict forKey:[[node attributeForName:@"name"] stringValue]];

            }

В конце цикла я получаю 10 диктов (10 пользователей) с одинаковой информацией для последнего пользователя в списке, как я могу получить 10 диктов с различной информацией о пользователе.Помоги мне, пожалуйста!

1 Ответ

0 голосов
/ 10 июня 2010

Вы переписываете один и тот же itemPreDict снова и снова. Для хранения различной информации вам нужно создать 10 разных словарей. Попробуйте

        for (CXMLElement *node in nodes) {
            NSMutableDictionary* itemPreDict = [[NSMutableDictionary alloc] init];
            // ^----------
            [itemPreDict setObject:[[node attributeForName:@"name"] stringValue] forKey:@"name"];
            [itemPreDict setObject:[[node attributeForName:@"gender"] stringValue] forKey:@"gender"];
            [itemPreDict setObject:[[node attributeForName:@"dob"] stringValue] forKey:@"dob"];

            [itemDict setObject:itemPreDict forKey:[[node attributeForName:@"name"] stringValue]];
            // v----------
            [itemPreDict release];
        }

вместо.

(Поскольку вам все равно нужно создать словарь, используйте -initWithObjectsAndKeys: вместо трехкратного вызова -setObject:. Это также позволяет itemPreDict быть NSDictionary вместо NSMutableDictionary.)

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