我正在尝试使用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时使用相同的对象?
谢谢。
发布于 2012-03-01 00:01:35
嗯,我对核心数据有一个非常基本的了解,而且我也处理过这个问题。如果你有一个NSManagedObject子类,你不能通过一个类别来添加实例变量。您可以添加setter、getter和属性,但不能添加额外的存储空间。
这种短暂的东西听起来很有趣。另一种方法是拥有一个“常规”对象(NSObject的子类),它对应于您的NSManagedObject,并且还具有您想要的任何非核心数据属性(包括存储ivars)。所以它看起来像这样:
(股票是一个CoreData实体)
ComboClass.h:
#import <Foundation/Foundation.h>
#import "Stock.h"
@interface ComboClass : NSObject
@property (weak, nonatomic) Stock *stock;
@property (strong, nonatomic) NSDictionary *nonPersistentDictionary;
@endComboClass.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祝好运,
达米恩
https://stackoverflow.com/questions/9497455
复制相似问题