Objective C - KeyValuePair类?

Kyl*_*yle 9 iphone objective-c

我正在寻找一个类似于C#的KeyValuePair的Objective C类(即使没有泛型).任何有第一个/第二个对象的东西.我可以创造我自己的没有问题,但我想如果一个已经存在,那么就没有必要重新发明轮子了.我自己找不到任何运气......有人知道吗?

mbr*_*ort 11

所以基本上就像一个hashmap,对吗?

使用NSMutableDictionary

这里的例子:

NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init]; 

// Add objects to a dictionary indexed by keys

[dictionary setObject:@"A Book about the Letter A" forKey:@"A"];
[dictionary setObject:@"A Book about the Letter B" forKey:@"B"];
[dictionary setObject:@"A Book about the Letter C" forKey:@"C"];

// Retrieve an object from a dictionary with a key

NSLog([dictionary objectForKey:@"B"]);

// Release a dictionary

[dictionary release];
Run Code Online (Sandbox Code Playgroud)

  • 像这样,但只有一个实例(hashmap/dictionary包含多个键/值).我正在寻找一个只有一个Key/Value的课程. (8认同)
  • 您可以考虑创建自己的"配对"类.或者,您可以子类化NSMutableDictionary,并且一次只在子类字典中强制执行一对对象的规则.没有某种标准的"NSPair"对象似乎很奇怪...... (3认同)

Pet*_*ull 5

一个简单的NSArray怎么样?

NSArray* kvp = [NSArray arrayWithObjects: key, value, nil];
// or, using boxed literals,
NSArray* kvp = @[key, value];
...
NSObject* key = [kvp firstObject];
NSObject* value = [kvp lastObject];
Run Code Online (Sandbox Code Playgroud)

您可以制作一个包装的函数+arrayWithObjects:(并处理nil键或值的情况,这可能会使简单的方法绊倒)

访问NSArray的元素可能比NSDictionary更快。