Кажется, что ManagedObject теряет тип своего класса или становится объектом другого типа - PullRequest
0 голосов
/ 02 января 2011

Я испытываю странное поведение с управляемым объектом CoreData. В моем методе viewDidLoad я делаю следующее:

    NSPredicate *predicate =[NSPredicate predicateWithFormat:@"uuid = %@", self.imageUUID];
    NSFetchRequest *imageFetchRequest = [[[NSFetchRequest alloc] init] autorelease];
    [imageFetchRequest setPredicate:predicate];
    NSEntityDescription *imageEntity = [NSEntityDescription entityForName:@"Image" inManagedObjectContext:appDelegate.managedObjectContext];
    [imageFetchRequest setEntity:imageEntity];
    error = nil;
    NSArray *array = [[appDelegate managedObjectContext] executeFetchRequest:imageFetchRequest error:&error];

    tagImage = (Image *)[array objectAtIndex:0];
    assert([tagImage isKindOfClass:[Image class]]);

Утверждение проходит. Это конкретное представление - TableViewController, и в моем методе cellForRowAtIndexPath мне нужно проверить некоторые свойства Image. Каждый раз, когда я обращаюсь к свойству tagImage, приложение завершается сбоем, поэтому я добавил следующее утверждение следующим образом:

assert([tagImage isKindOfClass:[Image class]]);

На этот раз утверждение не выполняется. Я понятия не имею, что будет делать изменения типа объектов tagImage.

Ответы [ 2 ]

2 голосов
/ 02 января 2011

Вы уверены, что сохраняете массив или управляемые объекты? Может случиться так, что их как-то выпустили и поэтому у вас ошибка?

0 голосов
/ 03 января 2011

Проверьте, что ваш класс Image определенно включен в вашу цель сборки.Я видел случаи, когда запрос на выборку возвращал vanilla NSManagedObjects, а не мой собственный подкласс, потому что я не включил класс в цель Logic Tests, которую я выполнял в то время.диктует, что вы должны префиксировать имена ваших классов двухбуквенным префиксом по вашему выбору (например, в данном случае что-то вроде MZImage), чтобы уменьшить вероятность конфликта имен классов.Существует довольно хороший шанс столкнуться с конфликтом имен классов с именем класса Image.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...