2015-01-08 4 views
0

Я пытаюсь определить тип объекта NSManagedObject, с которым я имею дело. Я делаю это следующим образом:Определение типа подкласса NSManagedObject

NSManagedObject* object; 

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

    Folders* folderObject = object; 

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

    AllFiles* fileObject = object; 
} 

Этот метод работает, однако я получить желтую ошибку: несовместимых типов указателей инициализации «AllFiles» с выражением NSManagedObject. allFiles and Folders - это подклассы NSManagedObject.

ответ

1

Это не «желтая ошибка», но предупреждение :-)

Вы просто должны бросить NSManagedObject в правый класс подавить предупреждение:

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

отладчик проверяет объект введите и сообщит, что существует несоответствие. Это может производить аварии. Поскольку вы знаете, что объекты являются подклассами NSManagedObject (отладчик не работает), вы можете указать тип объекта, чтобы сообщить отладчику, что все в порядке.

Смежные вопросы