2010-10-06 180 views
0

我試圖在使用核心數據的應用程序中解決的問題是能夠在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 

ab ove的方法是什麼蘋果(或者,至少據我看到閱讀文檔)概述了瞬態屬性,因此它應該可以工作:-(

任何想法,意見?

回答

0

呀,你有這些倒退:

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

你提供setImage和圖像的實施,使形象應該是@dynamic,其他你需要的合成方法,所以使用的@synthesize imageID和imageName。

好點,它們都應該是@dynamic,因爲你使用CoreData。

第二次嘗試:您已將RTStaffImage設置爲實體中的類名稱,對不對?

第三次嘗試:是RTStaffImage.m實際上是正在構建的目標的一部分嗎?

+0

編號imageID和imageName必須是@dynamic,因爲這些屬性的訪問器是由Core Data動態創建的。我看到你在說什麼圖像 - 我會嘗試@dynamic ... – 2010-10-07 04:01:19

+0

>>第二次嘗試:你已經在實體中設置了RTStaffImage作爲類名,對吧? 是的,我有。順便說一句 - 我試圖改變@synthesize圖像@動態圖像無效 – 2010-10-07 12:14:57

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

您在setImage和(UIImage *)之間缺少一個冒號。這是正確的版本:

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

這兩種方法的實現在哪裏?


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

只是好奇,我讀NSManagedObject那裏,你確定你創建RTStaffImage存在的實例?

+0

>>你在setImage和(UIImage *)之間缺少冒號。這只是我的錯字 - 我沒有剪切和粘貼。我有它正確的(或它不會編譯) – 2010-10-07 04:01:37

+0

>>只是好奇,我在那裏讀NSManagedObject,你確定你創建一個RTStaffImage的實例嗎?是。這就是Core Data的工作原理。如果你的子類NSManagedObject,在我的情況下RTStaffImage是一個子類,調試輸出總是說'NSManagedObject'不是實際的子類類型。不知道爲什麼... ..可能是因爲它沒有找到RTStaffImage上的setImage方法,它將它撞上響應鏈? – 2010-10-07 04:18:04