我有一个数据模型,它有两个实体,关系是一对多。
每个实体都有一个从NSManagedObject中继承的类。
我得到了一个实体的关系集,并在枚举集合时将每个集合成员转换为特定的子类。
当我这样做时
NSLog(@"My Entity: %@", myEntityInstance);
它记录但不会调用我的子类的方法:
- (NSString*) description
如果我发送,它会打电话:
NSLog(@"My Entity: %@", [myEntityInstance description]);
任何想法被称为什么以及为什么必须手动调用描述?
谢谢!
答案 0 :(得分:3)
如果类实例响应descriptionWithLocale:
,则NSLog
将使用该实例。虽然descriptionWithLocale:
未出现在NSManagedObject
的实例方法列表中,但仍有可能实现。
尝试覆盖descriptionWithLocale:
并查看是否会产生影响。
- (NSString *) descriptionWithLocale:(id) locale
{
return @"my description";
}
答案 1 :(得分:1)
我从未见过。我认为这不是NSManagedObject的行为。您可以在进行调用之前记录该类,以确保您的实例属于您认为的类。
答案 2 :(得分:0)
可能比赛晚了两年左右,但为了别人的利益,我今晚遇到了这个问题。原因是,虽然我为我的实体制作了NSManagedObject子类,但CoreData Modler中的一个实体将其“Class”设置回NSManagedObject而不是自定义子类。
我在子类文件中放入-description并不重要,因为对象是作为NSManagedObjects而不是我的自定义子类从Context中出来的。
将子类名称放回Xcode Coredata模型编辑器中的Entity Inspector中修复它。