带对象作为键的NSDictionary

时间:2012-11-15 17:10:05

标签: ios pointers key nsdictionary nsobject

我试图创建一个跟踪函数调用对象的NSDictionary。我想为每个对象创建一个唯一的字符串,而不了解它。我的第一个想法是使用对象指针的内存地址,但我不知道该怎么做。

有什么想法?我需要使用来自NSObject的某种唯一id作为我字典中的键。

3 个答案:

答案 0 :(得分:2)

如果您的应用程序仅支持iOS6,请检查NSDictionaryOfVariableBindings宏。

代码如下:

    // Create the dictionary
    NSObject *firstObject  = [NSString stringWithString:@"My first item"];
    NSObject *secondObject = @"[@"an", @"array", @"of", @"strings"]";
    NSDictionary *theDic   = NSDictionaryOfVariableBindings(firstObject, secondObject);

    // Access data
    NSString *singleString  = [theDic objectForKey:@"firstObject"];
    NSArray  *listOfStrings = [theDic objectForKey:@"secondObject"];

答案 1 :(得分:0)

我的建议是不要使用字典。如果要将它们放入数组中,可以将其视为具有自动生成的唯一键(索引)的字典。这正是你所描述的。如果由于某种原因你必须使用字典,我的建议是实现我所说的相同模型,但你必须生成和维护密钥。

答案 2 :(得分:-2)

虽然我同意您的解决方案听起来可能不是最佳方法,但您是否考虑过NSObject protocol中的-hash?所有NSObjects都应该返回一个。预先警告它是一个哈希值,因此两个不同的对象有可能具有相同的哈希值。

您还可以考虑您的收藏集实施的NSObject类别。该类别可以生成用作密钥的UUID。