我正在尝试在CoreData中使用transient属性。最后,我正在尝试创建一个只在运行时而不是在数据库中保存在内存中的对象。
我的二传手和物业的吸气者:
-(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 :(得分: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
祝你好运,
达明