Добавление новых объектов в NSMutableArray - PullRequest
2 голосов
/ 23 февраля 2011

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

Код такой:

@try {
    currentProfile = (Profile *) [cache objectAtIndex:(int)currentPosition-1];
}
@catch (NSException * e) {
    Profile *cached = [[Profile alloc] init];
    [cached loadProfile:currentPosition orUsingUsername:nil appSource:source];
    cached.position = NULL;
    [cache addObject:cached];
    currentProfile = cached;
    [cached release];
}

//And the "log" i use to show the error
Profile *temp;
for (int i=0; i<[cache count]; i++) {

    temp = (Profile *) [cache objectAtIndex:(int)currentPosition-1];
    NSLog(@"%@ - %d e %d", temp.name, temp.position, temp.realId);
}
[temp release];

NSLog возвращает мне время кеширования с одним и тем же объектом. И.Е.
для len = 1: первая - 1 е 1

для len = 2:
второй - 2 е 2
второй - 2 е 2

для len = 3:
третий - 3 е 3
третий - 3 е 3
третий - 3 е 3

и так далее ...
И что мне нужно это:
для len = 3:
первая - 1 е 1
второй - 2 е 2
третий - 3 е 3

1 Ответ

3 голосов
/ 23 февраля 2011

Возможно, вы захотите использовать переменную i внутри цикла вместо currentPosition

for (int i=0; i<[cache count]; i++) {
    temp = (Profile *) [cache objectAtIndex:i];
    NSLog(@"%@ - %d e %d", temp.name, temp.position, temp.realId);
}

В противном случае вы всегда получаете один и тот же объект.

Вы также можетехочу рассмотреть «для каждого» цикла вместо простого «для».Просто ради простоты.

for (Profile *temp in cache) {
  NSLog(@"%@ - %d e %d", temp.name, temp.position, temp.realId);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...