核心数据问题

时间:2010-10-06 18:06:04

标签: core-data properties

我试图在使用Core Data的应用程序中解决的问题是能够在NSManagedObject自定义ivar中保存计算值。我想要存储的计算值实际上是一个图像。我不想坚持这些图像;我构建它们并在应用程序的整个生命周期中销毁它们。我尝试过:

@interface RTStaffImage : NSManagedObject {

UIImage *image;

}

// Custom properties
@property (nonatomic, retain) UIImage *image;
// Managed object properties
@property (nonatomic, retain) NSNumber *imageID;
@property (nonatomic, retain) NSString *imageName;

和自定义访问器方法:

- (void)setImage (UIImage*)im;
- (UIImage *)image;

并在实施中:

@implementation RTStaffImage

@synthesize image;
@dynamic imageID;
@dynamic imageName;

这在运行时因无法识别的选择器问题而失败:

-[NSManagedObject setImage:]: unrecognized selector sent to instance

以上方法是Apple(或者,至少据我所知,已经阅读过文档)概述瞬态属性所以它应该有效: - (

任何想法,评论?

2 个答案:

答案 0 :(得分:0)

是的,你有这些倒退:

@synthesize image;
@dynamic imageID;
@dynamic imageName;

你正在为setImage和image提供一个实现,所以image应该是@dynamic,而其他你需要合成方法,所以使用@synthesize for imageID和imageName。

好的一点是,他们都应该是@dynamic,因为你使用的是CoreData。

第二次尝试:您已将RTStaffImage设置为实体中的类名称,对吗?

第3次尝试:RTStaffImage.m实际上是构建Target的一部分吗?

答案 1 :(得分:0)

- (void)setImage (UIImage*)im;

你错过了setImage和(UIImage *)之间的冒号。这是正确的版本:

- (void)setImage:(UIImage*)im;

这两种方法的实现在哪里?


-[NSManagedObject setImage:]: unrecognized selector sent to instance
好奇,我在那里读了NSManagedObject,你确定你在那里创建了RTStaffImage的实例吗?