我制作了一个包含字典条目的plist作为字典,每个ABRecord属性都有一个,以后我想使用它。
这些字典是key/value NSStrings,如下所示:kABEmailProperty/email。
我希望能够通过枚举解压缩的plist字典ABRecord (假定inRecord是ABRecord)从指定的ABRecord收集值。
__block NSMutableArray *valueGroup = [[NSMutableArray alloc] init];
[self.propsDict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
NSString *valueString = [inRecord valueForProperty:key];
if (valueString) {
NSDictionary *dict = [NSDictionary dictionaryWithObject:valueString forKey:obj];
[valueGroup addObject:dict];
}
}
}];如何正确地引用键,以便存储在plist中的是ABGlobals.h中的ABRecord全局属性引用而不是字符串?
我试过使用&key,和(Id)键,以及(void *)键,但是我真的只是在四处乱晃。
我在搜索有关使用全球外场的各种问题方面没有成功,尽管这是信息丰富的。
发布于 2011-11-18 23:12:42
如果我对你的理解是正确的,你就有以下几点:
NSString *foo = "kABEmailProperty";
你想做这样的事:
[inRecord valueForProperty:kABEmailProperty];
基于foo的价值。对,是这样?没有办法直接这样做,因为名称"kABEmailProperty“在运行时是不容易访问的;它只是一个编译时名称。
我的建议是制作一本字典,里面有所有的键,如下所示:
NSDictionary *keys = [NSDictionary dictionaryWithObjectsAndKeys:kABEmailProperty, @"kABEmailProperty", kABOtherProperty, @"kABOtherProperty", ..., nil];
然后你可以做这样的事情:
[inRecord valueForProperty:[keys objectForKey:foo]];
也就是说,从字符串@"kABEmailProperty"映射到kABEmailProperty实际拥有的值。
https://stackoverflow.com/questions/8188342
复制相似问题