как создать строку массива - PullRequest
0 голосов
/ 02 декабря 2009

У меня есть NSMutableArray, который содержит информацию об ученике, теперь я просто хочу извлечь только имя ученика и его среднюю оценку, так что я сделал

    NSMutableArray *stuCollection = [[NSMutableArray alloc] initWithCapacity:[students count]];

for (int i = 0; i < [students count]; i++) 
{
    if([students objectAtIndex:i] != NULL)
    {

    NSDictionary *dic = [students objectAtIndex:i];
    NSString *temp = [dic objectForKey:@"name"];

    [stuCollection  addObject:name];

    }   
}


for(int j=0; j< [stuCollection count]; j++)
{
    NSLOG(@"Name %@",[stuCollection objectAtIndex:j]);
}

Я могу запустить это в первый раз, но когда я делаю автоматическое сканирование, я могу выполнить 1-й, 2-й, 3-й цикл, но затем приложения прекращают показ, как показано ниже,

2009-12-02 14: 57: 37.908 AppBuzz [13073: 207] * Завершение приложения из-за необработанного исключения «NSInvalidArgumentException», причина: «* - [NSCFArray insertObject: atIndex:]: попытка вставить ноль 2009-12-02 14: 57: 37.916 AppBuzz [13073: 207] Стек: ( 820145437, 837578260, 819694387, 819694291, 814683071, 814716415, 814716245, 17529, 24097, 814480795, 819893443, 819891231, 858682228, 861592624, 861585968, 8997, 8860 ) прекращение вызова после выброса экземпляра 'NSException' Программа получила сигнал: «SIGABRT».

как это можно улучшить

спасибо

Ответы [ 2 ]

1 голос
/ 02 декабря 2009

Вы понимаете утверждения?

assert(students);
assert([students count]);

NSMutableArray * stuCollection = [[NSMutableArray alloc] initWithCapacity:[students count]];
assert(stuCollection);

for (int i = 0; i < [students count]; i++) {
    if ([students objectAtIndex:i] != NULL) {

        NSDictionary * dic = [students objectAtIndex:i];
        assert(dic);

        NSString * temp = [dic objectForKey:@"name"];
        assert(temp);

        assert(name);

        [stuCollection addObject:name];
    }
}
...
0 голосов
/ 02 декабря 2009

Так как, похоже, студенты - это коллекция Какао, вы можете использовать следующее:

NSArray *studentNames = [students valueForKey:@"name"];

Подробнее см. В KVC Операторы Set и Array .

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