我正在尝试将对象(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数组的
答案 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]);