2012-02-04 34 views
-3

如何瀏覽Objective-C中的數組?以下面的例子。通過Obj-C數組迭代

(
     [key] => value 
     [key] => value 
    ) 

有什麼建議嗎?

+0

ü意味着NSDictionary的對象? [someObject objectForKey:「」]或你的對象究竟是什麼? – 2012-02-04 08:03:28

+0

Xcode是一個IDE,它沒有數組。你的意思是Objective-C嗎?那麼,ObjC究竟是什麼? – deceze 2012-02-04 08:18:17

+0

「導航」,你的意思是循環或索引?請注意,Objective-C數組(僅在其他語言中)僅由整數索引。如果你需要字符串索引,你可以使用字典(['NSDictionary'](https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/nsdictionary_Class/Reference/Reference.html) ,在ObjC)。字典也被稱爲「關聯數組」,因此是PHP術語。 – outis 2012-02-04 10:10:18

回答

7

「導航」是一個相當含糊的術語,因爲它可能意味着「循環」或「索引」。 「迭代」是「循環」的同義詞。有時候人們對「索引」使用「取消引用」,但是當訪問指向的內容時,取消引用僅適用於指針。在一些語言中,如C,索引涉及解引用(這就是爲什麼解引用是以這種方式使用的),但通常情況並非如此,Objective-C中的NSArray並非如此。

與大多數其他語言一樣,Objective-C中的數組只是整數索引。字典是由字符串索引的數據結構;在Objective-C中,字典有NSDictionaryNSMutableDictionary。字典也被稱爲「關聯數組」,在討論PHP時經常縮短爲「數組」,因爲PHP中的所有數組都是關聯的。使用setObject:forKey:

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys: 
    [NSNumber numberWithDouble:120.50],@"balance", 
    @"myuser",@"username" 
    nil]; 

NSLog(@"%@", [dict objectForKey:@"balance"]); 
NSLog(@"%@", [dict objectForKey:@"username"]); 

您可以將項目添加到NSMutableDictionary:與objectForKey:法字典

您指數

// mutableDict is an owning reference; if not using ARC, it must be released 
NSMutableDictionary *mutableDict = [dict mutableCopyWithZone:NULL]; 
[mutableDict setObject:@"bar" forKey:@"foo"]; 

你也可以遍歷與fast enumeration語法鍵:

for (id key in dict) { 
    NSLog(@"%@: %@", key, [dict objectForKey:key]); 
} 

Bot h迭代和索引是最基本的數組操作。如果您目前的Objective-C信息來源沒有討論它們,請找到新的來源。如果你沒有源,找一個。沒有一個你永遠不會學到你所需要的一切。

參見: