2
在我的obj-c类中,我有一个将字符串映射到对象的字典。作为属性/方法的objective-c字典访问
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
@"value1", @"key1", @"value2", @"key2", nil];
MyClass* obj = [[MyClass alloc] initWithDictionary:dict];
现在,而不是做:
NSString* val1 = [obj value:@"key1"];
我想做的事:
NSString* val1 = [obj key1]; // @"value1"
NSString* val2 = [obj key2]; // @"value2"
NSString* val3 = [obj key3]; // nil, not found
这可能吗?
当然这假定(a)字典键是有效的标识符名称;和(b)没有“真正的”属性/方法具有相同的名称(这可能会调用真正的方法)。
你的答案是点睛之笔,虽然我会有点担心OP为什么需要做这样的事情。总的来说,如果它不会产生真正令人信服的好处,那么将这种魔法引入代码库似乎最好是谨慎的。 – jlehr 2011-12-24 20:42:36
@jlehr:我正在寻找类似Javascript的字典访问。我确实有一个理由。 – noamtm 2011-12-25 09:10:20
@Abizern:这*几乎*我想要的。在你上面的例子中,我希望能够调用[obj Key1],而不是[obj @“Key1”]。 – noamtm 2011-12-25 09:20:24