我已经将plist作为带有字典条目的字典,每个ABRecord
属性一个,我想稍后使用。
这些词典是键/值 NSStrings
,如下所示:
kABEmailProperty/email
。
我希望能够使用解压缩的plist通过枚举解压缩的plist字典来收集指定ABRecord
的值(假设inRecord是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];
}
}
}];
如何正确引用键,以便它是ABRecord
中的ABGlobals.h
全局属性引用,而不是字符串存储在plist中?
我尝试过使用& key,(id)键和(void *)键,但我真的只是 flailing 。
我没有成功地搜索有关使用全球外播的各种问题,尽管这些内容已经提供了信息。
答案 0 :(得分:0)
如果我理解正确,你会得到以下信息:
NSString *foo = "kABEmailProperty";
你希望能够做到这样的事情:
[inRecord valueForProperty:kABEmailProperty];
基于foo的值。正确?没有办法直接这样做,因为名称“kABEmailProperty”在运行时不易(轻松)访问;它只是一个编译时的名字。
我的建议是制作一本包含所有键的字典;像这样的东西:
NSDictionary *keys = [NSDictionary dictionaryWithObjectsAndKeys:kABEmailProperty, @"kABEmailProperty", kABOtherProperty, @"kABOtherProperty", ..., nil];
然后你可以这样做:
[inRecord valueForProperty:[keys objectForKey:foo]];
即。从字符串@"kABEmailProperty"
到kABEmailProperty
实际拥有的值进行映射。