迭代Obj-C数组

时间:2012-02-04 07:57:05

标签: objective-c arrays nsarray nsdictionary

如何在Objective-C中浏览数组?以下面的例子为例。

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

那里有任何建议吗?

6年后,我意识到这个问题是多么愚蠢。对不起Stack Overflow。

1 个答案:

答案 0 :(得分:7)

“导航”是一个相当模糊的术语,因为它可能意味着“循环”或“索引”。 “迭代”是“循环”的同义词。有时人们使用“dereference”作为“index”,但是在访问指向的内容时,解除引用仅适用于指针。在某些语言中,例如C,索引涉及解除引用(这就是以这种方式使用解除引用的原因),但这通常不正确,而且Objective-C中的NSArray不是这样。 / p>

与大多数其他语言一样,Objective-C中的数组只是整数索引。字典是由字符串索引的数据结构;在Objective-C中,词典以NSDictionaryNSMutableDictionary提供。字典也称为“关联数组”,在谈论PHP时通常会缩短为“数组”,因为PHP中的所有数组都是关联的。

使用objectForKey:方法索引字典:

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

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

您可以使用setObject:forKey:

将项目添加到NSMutableDictionary
// 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]);
}

迭代和索引都是最基本的数组操作。如果您目前的Objective-C信息来源没有讨论它们,请找一个新的来源。如果您没有来源,请找一个。如果没有一个,你永远不会学到所需的一切。

另见: