我有一个字典包含(例如)
"Mark":"Name","Green":"Lastname"
我有一个数据模型如下:
@interface Person : NSManagedObject
@property (nonatomic, retain) NSString * Name;
@property (nonatomic, retain) NSString * Lastname;
我可以枚举字典allkeys来设置datamodel成员值吗?
类似的东西:
let newPerson = CoreDataHelper.insertManagedObject(NSStringFromClass(Person), managedObjectContext: self.moc) as! Person
for key in self.newPersonDict!.allKeys {
newPerson.key = self.newPersonDict!.objectForKey(key)
}
谢谢, 最大
答案 0 :(得分:2)
你可以使用func setValuesForKeysWithDictionary(_ keyedValues:[NSObject:AnyObject])
答案 1 :(得分:2)
尝试这样的事情:
let newPerson = CoreDataHelper.insertManagedObject(NSStringFromClass(Person), managedObjectContext: self.moc) as! Person
for key in self.newPersonDict!.allKeys {
newPerson.setValue(self.newPersonDict!.valueForKey(key), forKeyPath: key)
}
答案 2 :(得分:0)
如其中一条评论中所述,您可以通过反思实现这一点。可能有更好的方法来做到这一点,但这里有一个如何做到这一点的例子
class YourClass : NSObject {
func getKeys() -> Array<String> {
let mirror = reflect(self)
var keys = [String]()
for i in 0..<mirror.count {
let (name,type) = mirror[i]
keys.append(name)
}
return keys
}
func getObjectForKey(key: String) -> AnyObject? {
return self.valueForKey(key)
}
}
你还需要施放AnyObject吗?对于您的特定类型,请注意,valueForKey在使用未知密钥调用时可能会导致异常。