Переходный атрибут в CoreData - PullRequest
       18

Переходный атрибут в CoreData

2 голосов
/ 29 февраля 2012

Я пытаюсь использовать атрибут переходных свойств в CoreData.В конце концов я пытаюсь создать объект, который будет сохранен в памяти только во время выполнения, а не в базе данных.

Мой установщик и получатель для свойства:

-(AVMutableComposition *) composition
{
    AVMutableComposition *composition;
    [self willAccessValueForKey:@"composition"];
    composition = [self primitiveValueForKey:@"composition"];
    [self didAccessValueForKey:@"composition"];
    if (composition == nil) 
    {
        self.composition = [AVMutableComposition composition];
    }

return composition;
}
- (void)setComposition:(AVMutableComposition*)aComposition
{
    [self willChangeValueForKey:@"composition"];
    [self setPrimitiveValue:aComposition forKey:@"composition"];
    [self didChangeValueForKey:@"composition"];
}

У меня естьпроблема с моим новым созданным объектом, в начале он создавал его с нуля каждый раз, а теперь он просто не работает должным образом.

Может кто-нибудь посоветовать, как написать правильный установщик и получатель для создания объекта один разв первый раз, а затем использовал один и тот же каждый раз, когда я звоню получателю?

Спасибо.

1 Ответ

0 голосов
/ 29 февраля 2012

Хм. У меня есть базовое понимание основных данных, и я работал с этой проблемой. Если у вас есть подкласс NSManagedObject, вы не можете добавлять переменные экземпляра через категорию. Вы можете добавить сеттеры и геттеры и свойства, но без дополнительного хранилища.

Эта преходящая вещь звучит довольно интересно. Другой способ сделать это - иметь «обычный» объект (подкласс NSObject), который соответствует вашему NSManagedObject, а также имеет любые свойства, отличные от CoreData, которые вы хотите (включая ivars хранилища). Так это выглядит примерно так:

(Акция является сущностью CoreData)

ComboClass.h:

#import <Foundation/Foundation.h>
#import "Stock.h"

@interface ComboClass : NSObject

@property (weak, nonatomic) Stock *stock;
@property (strong, nonatomic)  NSDictionary *nonPersistentDictionary;

@end

ComboClass.m:

#import "ComboClass.h"

@implementation ComboClass

@synthesize stock = _stock;
@synthesize nonPersistentDictionary = _nonPersistentDictionary;

- (Stock*)stock {
    // retrieve the stock from CoreData using a fetchedResultsController
    return _stock;
}

- (NSDictionary*)nonPersistentDictionary {
    if (!_nonPersistentDictionary) {
        _nonPersistentDictionary = [[NSDictionary alloc] init];
    }
    return _nonPersistentDictionary;
}

@end

Удачи,

Дэмиен

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