将新对象添加到NSMutableArray

时间:2011-02-23 00:32:18

标签: iphone objective-c nsmutablearray

我有一个名为ProfileNSMutableArray的自定义类,我会添加配置文件对象,以防我需要在迭代中来回移动。

代码是这样的:

@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使用相同的对象返回缓存时间长度。 I.E.
对于len = 1: 第一 - 1 e 1

表示len = 2:
第二 - 2 e 2
第二 - 2 e 2

表示len = 3:
第三 - 3 e 3
第三 - 3 e 3
第三 - 3 e 3

依旧......
我需要的是:
对于len = 3:
第一 - 1 e 1
第二 - 2 e 2
第三 - 3 e 3

1 个答案:

答案 0 :(得分:3)

您可能希望在循环中使用变量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);
}

否则,您始终会检索相同的对象。

您可能还想考虑每个&#39;循环而不是简单的'#39;。只是为了简单起见。

for (Profile *temp in cache) {
  NSLog(@"%@ - %d e %d", temp.name, temp.position, temp.realId);
}