我试图创建一个跟踪函数调用对象的NSDictionary。我想为每个对象创建一个唯一的字符串,而不了解它。我的第一个想法是使用对象指针的内存地址,但我不知道该怎么做。
有什么想法?我需要使用来自NSObject的某种唯一id作为我字典中的键。
答案 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。