使用键访问数组/对象集

时间:2012-02-01 10:00:38

标签: iphone objective-c ios cocoa

我希望能够将对象添加到NSArray并使用Keys访问它们。目前我正在这样做的方式是创建一个单独的NSDictionary键值对,其中值是一个整数,表示我NSArray中的索引。这对我来说似乎是一个额外的步骤。

如果我对NSDictionary的理解是正确的,那么只能存储'值':指向对象的指针不能。

当然必须有一个等效的NSDictionary类型函数,允许使用密钥存储和访问对象?我查看了文档,但似乎无法找到任何答案,除非我遗漏了一些明显的东西。

6 个答案:

答案 0 :(得分:1)

NSDictionary用于存储键值对。如果在创建dictioanry后添加键值对,请使用NSMutableDictionary类。例如,

[dictionaryObject setObject:@"" forKey:@"abc"];

答案 1 :(得分:1)

您可以将对象存储在NSDictionary中,并可以通过keys ...

进行访问

答案 2 :(得分:1)

简而言之,没有。

数组(NSArray)是对象引用的有序集合,简单地说,是一个有序的对象集合
与字典相反,字典是无序的,并且值可以通过键访问。

您对集合的理解可能是错误的,您不存储值,而是指针(引用)。

如果需要将引用存储在数组中,则需要额外的步骤,但在这种情况下,您应该考虑使用字典。一个选项是使用处理订单的键 例如:

[myDictionary objectForKey:@"1"];

可能相当于:

[myArray objectAtIndex:1];

答案 3 :(得分:0)

多数民众赞成错误,您可以将对象存储在NSDictionary中。查看方法dictionaryWithObjects:forKeys:dictionaryWithObjectsAndKeys:

答案 4 :(得分:0)

我没有使用Cocoa的经验,但查看文档似乎NSDictionary(或至少NSMutableDictionary)应该处理您的请求(不使用NSArray)。

答案 5 :(得分:0)

我想我理解你的问题。我的建议是使用NSMutableArray和宏,如:

NSMutableArray *array=[[NSMutableArray alloc]init];
#define SOME_MACRO 0
    id someObject;
    [array insertObject:someObject atIndex:SOME_MACRO];
    id getterObject=[array objectAtIndex:SOME_MACRO];

<小时/> 当然,在头文件中定义宏。