2009-11-07 35 views
0

紅寶石代碼(IRB)[目標c]大約的NSMutableArray

irb(main):001:0> ary = ["AAA", "BBB", "CCC"] 
=> ["AAA", "BBB", "CCC"] 
irb(main):003:0> ary.index("AAA") 
=> 0 
irb(main):004:0> ary.index("BBB") 
=> 1 
irb(main):005:0> ary.index("CCC") 
=> 2 
irb(main):006:0> ary.index("DDD") 
=> nil 

我想在目標c(NSMutableArray的)做相同。

回答

0

閱讀Apple的NSArray和NSMutableArray的文檔。

2
NSMutableArray *ary = [NSMutableArray arrayWithObjects:@"AAA",@"BBB",@"CCC",nil]; 
NSLog([ary description]); 
NSInteger ndx = [ary indexOfObjectIdenticalTo:@"AAA"]; 
NSLog(@"%i",ndx); 
ndx = [ary indexOfObjectIdenticalTo:@"BBB"]; 
NSLog(@"%i",ndx); 
ndx = [ary indexOfObjectIdenticalTo:@"CCC"]; 
NSLog(@"%i",ndx); 
ndx = [ary indexOfObjectIdenticalTo:@"DDD"]; 
NSLog(@"%i",ndx); 

可可方法都很自我解釋,所以瀏覽標題可以幫助您解決幾乎任何問題。

編輯:從NSArray的改變NSMutableArray裏,補充說明:

注:最後一個方法返回-1,而不是零。

+2

你已經使用了indexOfObjectIdenticalTo。幸運的是,由於編譯器優化,這將在您提供的示例中起作用,但不能保證這樣做。你應該使用-indexOfObject :. 此外,最後一種情況下返回NSNotFound,它不是-1。最後,你應該使用NSUInteger,而不是NSInteger,如果我想變得非常挑剔,我會指出你會使用%lu格式說明符並將ndx轉換爲unsigned long,坦率地說,它很醜陋,但你可以責怪蘋果爲那個。 –

+0

哎呀!感謝克里斯的更正。我混淆了哪種方法匹配內存中具有完全相同地址的對象,以及與具有完全相同值的對象匹配的對象。以爲我已經得到它的權利,因爲它正確執行(如果它編譯:出貨!)。 –