答案 0 :(得分:2)
在NSArray中,键只能是整数。因此,您只需检查您尝试访问的索引是否小于数组中的项目数。您可以通过计数方法检查项目数:
NSArray *array = ... some array ...
NSUInteger index = ... some index ...
if (index < [array count]) {
// It's safe to do [array objectAtIndex:index]
}
答案 1 :(得分:1)
PHP“数组”和Cocoa“数组”不是一回事。
在Cocoa中,“数组”是一个扁平的,有序的值集合。每个值在数组中的位置称为其索引。这与C“数组”的含义相同。
在PHP中,“数组”是一个关联数组,将键映射到值。另一个术语是 dictionary ,这就是Cocoa所称的:Cocoa的类就是NSDictionary。
所以你想要的是NSDictionary,而不是NSArray。
array_key_exists
的对应方为objectForKey:
:如果字典中不存在该密钥,则objectForKey:
会返回nil
。
array_search
的对应方为allKeysForObject:
。
答案 2 :(得分:1)
在php中,array_key_exists用于“关联”数组或散列,或者Objective-C称它们为“Dictionaries”。所以你应该使用:
的NSDictionary 要么 的NSMutableDictionary
所以你可以这样做:
NSMutableDictionary *dItems = [NSMutableDictionary alloc] init] [[NSMutableDictionary alloc] init];
[dItems dItems: @"Key" forKey: @"Value"];
[dItems dItems: @"Key2" forKey: @"Value2"];
if ([dItems valueForKey: "Key"] != nil) {
// exists
}
NSDictionary每次迭代数组都要高效得多,并且有很多
答案 3 :(得分:0)
您应该查看NSArray Class Reference中的“查找数组中的对象”部分。
-indexOfObject:
或-indexOfObjectIdenticalTo:
可能就是您要找的。 p>
答案 4 :(得分:0)