假设我有一个NSObject的子类(让我们称之为' BSObject')具有以下属性:
NSString *name;
NSNumber *num;
我有一个BSObjects的NSMutableArray(让我们称之为“BSCollection'”。
对于磁盘上的存储,我有一个属性列表,它是一个字典数组。 BSCollection由根对象(数组)表示,并且数组的每个元素是表示BSObject的字典。 字典的关键是属性名称,值是BSObject的值。
具有两个BSObject的示例plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<dict>
<key>name</key>
<string>this is a name</string>
<key>num</key>
<integer>34</integer>
</dict>
<dict>
<key>name</key>
<string>this is another name</string>
<key>num</key>
<integer>22222</integer>
</dict>
</array>
</plist>
现在我想尽可能简洁地将plist加载到BSObject的BSCollection中。我知道我可以为每个键/值对执行类似的操作:
BSCollection = [BSCollection alloc] init];
if ([[NSFileManager defaultManager] fileExistsAtPath:URL]) {
NSArray *rawXML = [[NSArray alloc] initWithContentsOfFile:URL];
for (NSDictionary *object in rawXML) {
BSObject *new = [[BSObject alloc] init];
new.name = [new objectForKey:@"name"];
new.num = [new objectForKey:@"num"];
[BSCollection addObject:new];
}
}
但是:BSObject的属性和NSDictionary的键是一样的!有没有办法可以利用这个事实? 我相信程序语言,我会使用类似&#34; exec()&#34;从属性名称中获取值,假设我可以以某种方式获取对象的属性数组? 我担心我不确定我在寻找什么,因此我的谷歌搜索空洞。
答案 0 :(得分:0)
您的代码示例搞砸了,但您想要的是:
[new setValuesForKeysWithDictionary:dict];