当前位置:  开发笔记 > IOS > 正文

Swift:反映NSManagedObject的子类的属性

如何解决《Swift:反映NSManagedObject的子类的属性》经验,为你挑选了1个好方法。

使用镜像访问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上使用反射机制.



1> Martin R..:

Core Data属性的访问器方法在运行时动态合成.

您可以使用entity属性NSManagedObject为a NSEntityDescription 且具有属性来枚举Core Data实体的attributesByName属性.

一个简单的例子:

for (name, attr) in  newManagedObject.entity.attributesByName {
    let attrType = attr.attributeType // NSAttributeType enumeration for the property type
    let attrClass = attr.attributeValueClassName ?? "unknown"
    print(name, "=", newManagedObject.valueForKey(name), "type =", attrClass)
}

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有