Objective c 当NSLog';D

Objective c 当NSLog';D,objective-c,core-data,Objective C,Core Data,我有一个数据模型,在一对多的关系中有两个实体 每个实体都有一个从NSManagedObject子类化的类 我获取一个实体的关系集,并在枚举集合时遍历它,将每个集合成员转换为特定的子类 当我这样做的时候 NSLog(@"My Entity: %@", myEntityInstance); 它记录但不调用我的子类的方法: - (NSString*) description 如果我发送: NSLog(@"My Entity: %@", [myEntityInstance description])

我有一个数据模型,在一对多的关系中有两个实体

每个实体都有一个从NSManagedObject子类化的类

我获取一个实体的关系集,并在枚举集合时遍历它,将每个集合成员转换为特定的子类

当我这样做的时候

NSLog(@"My Entity: %@", myEntityInstance);
它记录但不调用我的子类的方法:

- (NSString*) description
如果我发送:

NSLog(@"My Entity: %@", [myEntityInstance description]);
您知道调用什么以及为什么必须手动调用描述吗


谢谢

我从来没见过。我不认为这是一种管理对象的行为。您可以在进行调用之前记录该类,以确保您的实例属于您认为属于的类

如果类实例响应
descriptionWithLocale:
,则将使用它。虽然
descriptionWithLocale:
没有出现在的实例方法列表中,但它仍然可能被实现

尝试覆盖
descriptionWithLocale:
,看看这是否有区别

- (NSString *) descriptionWithLocale:(id) locale
{
    return @"my description";
}

比赛可能晚了两年左右,但为了其他人的利益,我今晚遇到了这个问题。原因是,虽然我为我的实体创建了NSManagedObject子类,但CoreData Modler中的一个实体将其“类”设置回了NSManagedObject,而不是自定义子类

我在我的子类文件中输入了什么-description并不重要,因为这些对象是作为NSManagedObjects而不是我的自定义子类从上下文中出来的


将子类名称放回Xcode Coredata模型编辑器中的实体检查器中修复了它

我也没见过这个。还应该注意的是,必须非常小心地实现
-description
,因为在那里使用核心数据属性会导致有时不需要的获取。