使用 Mirror 访问 NSManagedObject 子类的内部结构时,所有托管变量都会被忽略。
public class Foo: NSManagedObject {
@NSManaged var bar: String?
}
var f: Foo = ...
// ... creating a Foo in a valid context ...
let mirror = Mirror(reflecting: f)
for c in mirror.children { // children count == 0
print("\(c.label!):\(c.value)") // never executed
}
NSManagedObjects如何使用反射机制?
attributeType
返回在Core Data模型检查器中定义的类型枚举。attributeValueClassName
给出用于表示对象的类的名称。同时也是托管对象的成员是关系,可以使用relationshipsByName
进行枚举。- 你实际上想要实现什么? - Martin RMirror
的Children
,来确定序列化对象中所需的值,例如:deserialize<T:NSObject>(serialized: String, type: T.Type)
。一切都很顺利,直到使用NSManagedObject的子类时出现问题。至少有两个原因:a)我的算法需要NSObject
的默认构造函数,而这个函数被NSManagedObject
隐藏了。b)NSManagedObject
在运行时动态合成属性,正如你所说,所以镜像没有子元素。 - Guardian667