Cocoa touch 如何在运行时检查NSManagedObject子类上是否存在属性

Cocoa touch 如何在运行时检查NSManagedObject子类上是否存在属性,cocoa-touch,cocoa,core-data,Cocoa Touch,Cocoa,Core Data,如何在运行时检查特定实体的属性是否存在。我将实现名为dateAddStamp的属性,但并非所有实体都具有此属性。该类将作为其他实体类的基础。。。所以我想在运行时检查我是否可以调用[self-setPrimitiveValue:xxx-forKey:xxx]。。。 谢谢。为了改进omz的答案,您还应该检查属性是否是属性(而不是名为@“foo”的关系): 迅速地 let hasFoo = myObject.entity.propertiesByName.keys.contains("foo")

如何在运行时检查特定实体的属性是否存在。我将实现名为dateAddStamp的属性,但并非所有实体都具有此属性。该类将作为其他实体类的基础。。。所以我想在运行时检查我是否可以调用[self-setPrimitiveValue:xxx-forKey:xxx]。。。
谢谢。

为了改进omz的答案,您还应该检查属性是否是属性(而不是名为@“foo”的关系):

迅速地

 let hasFoo =  myObject.entity.propertiesByName.keys.contains("foo")
Swift 3.2 使用包含来自密钥数组的检查:

if managedObject.entity.attributeKeys.contains("yourKey") {
   let value = managedObject.value(forKey: "youreKey") as! ClassName)

}
或使用if let:

if let data = managedObject.value(forKey: "youreKey") {
   let value = data as! ClassName
}
if managedObject.entity.attributeKeys.contains("yourKey") {
   let value = managedObject.value(forKey: "youreKey") as! ClassName)

}
if let data = managedObject.value(forKey: "youreKey") {
   let value = data as! ClassName
}