2012-02-29 100 views
2

我正尝试在CoreData中使用transient属性。最后,我试图创建一个只在运行时保存在内存中而不在数据库中的对象。CoreData中的瞬态属性

我的setter和getter的属性:

-(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"]; 
} 

我有我的新创建的对象的问题,一开始它都从头创建它,现在它只是不能正常工作。

任何人都可以建议如何编写适当的setter和getter以便在第一次创建对象一次,然后每次调用getter时使用同一个对象?

谢谢。

回答

0

嗯我对Core Data有一个非常基本的理解,并且我已经处理了这个问题。如果你有一个NSManagedObject子类,你不能通过一个类别添加实例变量。您可以添加setter和getter和属性,但不添加额外的存储空间。

这种瞬态的事情听起来很有趣。另一种方法是创建一个与NSManagedObject对应的“常规”对象(NSObject的子类),并且还具有所需的任何非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 

祝你好运,

达米恩

相关问题