确定NSManagedObject子类的类型

时间:2015-01-08 10:50:38

标签: ios

我正在尝试确定我正在处理的NSManagedObject的类型。 我是通过以下方式完成的:

NSManagedObject* object;

if ([[object entity].name isEqualToString:@"Folders"]){

  Folders* folderObject = object;

}else if ([[object entity].name isEqualToString:@"AllFiles"]){

    AllFiles* fileObject = object; 
}

此方法有效,但是我收到黄色错误: 不兼容的指针类型使用NSManagedObject的表达式初始化“AllFiles”。 allFiles和Folders是NSManagedObject的子类。

1 个答案:

答案 0 :(得分:1)

它不是"黄色错误",但是警告: - )

您只需将NSManagedObject强制转换为正确的类以禁止警告:

if ([[[object entity] name] isEqualToString:@"Folders"]) {
    Folders *folderObject = (Folder *)object;
}
else if ([[[object entity] name] isEqualToString:@"AllFiles"]) {
    AllFiles *fioleObject = (AllFiles *)object;
}

调试器检查对象类型并通知您存在不匹配。这可以产生崩溃。既然您知道对象是NSManagedObject的子类(调试器没有),您可以转换对象类型以告诉调试器所有对象都没问题。