2012-01-08 115 views
0

我試圖插入對象(NSNumbers)到NSMutable陣列,但是當我查看時,objectAtElement總是返回0NSMutableArray的未保存

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計數]每一次當我插入新的東西進去,它總是返回0,所以我相信與我是如何將東西放到了NSMutable陣列

回答

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 

更新%d%lu感謝@markhunte - 這是很難記住的更精細的細節沒有測試它

+0

@「%d」是@「%lu」 – markhunte 2012-01-08 19:53:15

1

問題使用

[[last100 objectAtIndex:prevCount] intValue] 

,而不是

(int)[last100 objectAtIndex:prevCount] - 這種露骨的轉換將無法正常工作。

[... intValue]是NSNUmber將其轉換爲int的消息。

+0

有道理,但實際上並沒有幫助:/ – Chris 2012-01-08 19:15:42

+0

@克里斯有你之前檢查'indexInt'你插入它? – Kevin 2012-01-08 19:18:12

+0

@Kevin是的,我在 – Chris 2012-01-08 19:20:10

0

NSNumber是一個對象,你不能只把它投到int。使用intValue

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

之前和之後檢查過,或者你可以使用'%@'對象格式說明符。 'NSLog(@「Entry#%d:%@」,prevCount,[last100 objectAtIndex:prevCount]);' – 2012-01-08 19:17:38