从 NSMangedObject 子类类对象中获取实体名称

Posted

技术标签:

【中文标题】从 NSMangedObject 子类类对象中获取实体名称【英文标题】:Obtaining entity name from NSMangedObject subclass class object 【发布时间】:2013-01-08 16:48:19 【问题描述】:

是否有一种内置方法可以从 NSManagedObjectSubclass 的类对象中获取实体名称?我知道这可以很容易地从子类的实例中确定,但我想问类本身。我可以写一个类函数,但我宁愿自省地这样做。

【问题讨论】:

没有内置方法,但这个答案提供了一个可能的解决方案:***.com/a/14049649/1187415 谢谢。我的类名与我的 entityNames 不同,所以我没有使用这种方法:目前,我只是从我的所有类采用的类函数中传递常量字符串。 rob mayoff 的回答中的entityName 类方法正是针对这种情况:它从核心数据模型中的实体描述中检索实体名称。 你是对的;我没有看过去他在顶部所做的事情。谢谢 如果您对这个答案感到满意,我们可以将其作为***.com/questions/14049592/… 的副本关闭。 【参考方案1】:

您现在可以通过执行NSManagedObject.entity().name 来实现,其中NSManagedObject() 是您的子类。

【讨论】:

这实际上是可选的并且不是可靠的来源。我曾多次在 .entity().name 返回 nil 的情况下在应该有实体的 NSManagedObject 的子类上调用它。我不建议依赖这个。 它返回可选的,所以你总是需要在解包之前检查提供的值。您可以提出其他获得该名称的方法。 @Vasily 标记是对的。出于某种奇怪的原因,.name 返回了 nil。如果您要在解包之前检查然后传递替代方案,您不妨一开始就指定替代方案。【参考方案2】:

如果您还没有,请查看 mogenerator。 http://raptureinvenice.com/getting-started-with-mogenerator/

它为核心数据添加了许多缺失的功能。特别是它使您不必重新生成实体类。

您可以遍历上下文中实体的键值:

[managedObjectContext 注册对象];

【讨论】:

以上是关于从 NSMangedObject 子类类对象中获取实体名称的主要内容,如果未能解决你的问题,请参考以下文章

给另一个对象一个 NSManagedObject

将 NSmangedObject 转换为 JsonModel

NSMangedObject 在索引处替换

从 UITapGestureRecognizer 获取对象的标签

5_面向对象-中之子类对象实例化全过程

Java中怎样获取一个类的所有子类?