我正在尝试确定我正在处理的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的子类。
答案 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
的子类(调试器没有),您可以转换对象类型以告诉调试器所有对象都没问题。