Основные данные и временные свойства

У меня проблемы с настройкой временного свойства в Core Data. Проблема, которую я пытаюсь решить: у меня есть коллекция объектов, успешно сохраненных с использованием Core Data. Эта коллекция по существу является коллекцией только для чтения, но во время выполнения я хочу связать другой объект (в данном случае UIImage) с каждым элементом в коллекции. Мне не нужно хранить UIImages; это чисто ассоциация времени выполнения. Итак, что мне действительно нужно, так это «заполнитель» в каждом объекте в коллекции, где я могу удалить UIImage позже.

Временный атрибут кажется правильным, и для этого справочные документы Core Data говорят мне, что я должен установить добавил в модель данных «необязательный переходный атрибут типа undefined», что я сделал: XCode snippet

Кроме того, он сообщает мне, что мне не нужно определять соответствующее свойство в объекте реализации, но мне придется написать собственные методы доступа и установки. Я смоделировал эти методы на основе примеров в документации следующим образом:

- (void)setDisplayImage:(UIImage *)anImage {

    [self willChangeValueForKey:@"displayImage"];
    [self setPrimitiveValue:anImage forKey:@"displayImage"];
    [self didChangeValueForKey:@"displayImage"];
}

и:

- (UIImage *)displayImage {

    [self willAccessValueForKey:@"displayImage"];
    UIImage *anImage = [self primitiveDisplayImage];
    [self didAccessValueForKey:@"displayImage"];

    if (anImage == nil) {       
        NSData *displayImageData = [self displayImageData];
        if (displayImageData != nil) {
            anImage = [NSKeyedUnarchiver unarchiveObjectWithData:displayImageData];
            [self setPrimitiveDisplayImage:anImage];
        }
    }
    return anImage;
}

Существует также отложенный метод "записи" (willSave), который я написал для строгой полноты, хотя, как и выше, я буду никогда не записывать эти объекты обратно в хранилище.

Проблема, которую я получаю, заключается в методах primitiveDisplayImage и setPrimitiveDisplayImage - (UIImage *) displayImage {. По сути, компилятор выдает предупреждения для этих двух методов, поскольку «объект X может не реагировать на 'primitiveDisplayImage' ..» и т. Д. Однако, как я понимаю из документации, эти примитивные аксессоры / сеттеры создаются автоматически - похоже, это не так. Кто-нибудь может помочь мне решить эту проблему? Большое спасибо

5
задан JOM 19 June 2014 в 11:02
поделиться