NSMutableArray没有被保存

时间:2012-01-08 19:11:00

标签: objective-c arrays nsmutablearray

我正在尝试将对象(NSNumbers)插入到NSMutable数组中,但是当我检查它时,objectAtElement总是返回0.

NSNumber *indexNum = [NSNumber numberWithInt:indexInt];
[last100 insertObject:indexNum atIndex:prevCount];
NSLog(@"Entry #%d : %d", prevCount, (int)[last100 objectAtIndex:prevCount]);
prevCount++;

indexInt正在通过该方法进入,我已经检查了它并且它是有效的。 indexNum也已经过检查并匹配indexInt。问题是NSLog(@"Entry #%d : %d", prevCount, (int)[last100 objectAtIndex:prevCount]);总是返回

2012-01-08 14:08:11.551 ThoughtSpreader[20746:fb03] Entry #9 : 0条目号码会改变,但0总是在那里。

哦,我每次插入新内容后都检查了[last100 count],它总是返回0,所以我相信它是如何插入NSMutable数组的

3 个答案:

答案 0 :(得分:5)

如果您的计数总是返回0,那么您可能实际上没有实例化NSMutableArray

NSMutableArray *array = [NSMutableArray array];

[array addObject:[NSNumber numberWithInt:1]];

NSLog(@"%lu", [array count]); // Count => 1

//-------

array = nil;

[array addObject:[NSNumber numberWithInt:1]]; // Calling methods on nil is a no-op

NSLog(@"%lu", [array count]); // Count => 0

感谢@markhunte将%d更新为%lu - 如果不对其进行测试就很难记住更精细的细节

答案 1 :(得分:1)

使用

[[last100 objectAtIndex:prevCount] intValue]

而不是

(int)[last100 objectAtIndex:prevCount] - 这种明确的转换不起作用。

[... intValue]是NSNUmber的消息,它将其转换为int

答案 2 :(得分:0)

NSNumber是一个对象,您不能将其强制转换为int。使用intValue

NSLog(@"Entry #%d : %d", prevCount, [[last100 objectAtIndex:prevCount] intValue]);