从 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 子类类对象中获取实体名称的主要内容,如果未能解决你的问题,请参考以下文章
将 NSmangedObject 转换为 JsonModel