2012-02-29 99 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 

祝你好運,

達米恩

相關問題