2012-02-04 68 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信息来源没有讨论它们,请找到新的来源。如果你没有源,找一个。没有一个你永远不会学到你所需要的一切。

参见: