2009-10-12 83 views
2

時例外,我有一個NSManagedObject子類,由Xcode的模型界面創建。
該類有一些NSString和NSNumber成員,以及一個NSDate成員。可可觸摸,NSManagedObject:設置屬性

當我嘗試設置NSDate的成員,我得到以下異常:
2009-10-12 21:53:32.228 xxx[2435:20b] Failed to call designated initializer on NSManagedObject class 'Item'
2009-10-12 21:53:32.228 xxx[2435:20b] *** -[Item setDate:]: unrecognized selector sent to instance 0x3f7ed30
2009-10-12 21:53:32.229 xxx[2435:20b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[Item setDate:]: unrecognized selector sent to instance 0x3f7ed30'

日期參數只是和其他人一樣,不同的是,而不是被一個

@property (nonatomic, retain) NS{String,Number}* propname; 

這是一個

@property (nonatomic, retain) NSDate *date; 

順便說一句,在Item比如我分配上只是一個普通的[[Item alloc] init],沒有關聯的上下文或任何東西。

首先,我想我的NSDate *是錯誤的,那麼我想給它分配[NSDate的日期],甚至爲零。它仍然崩潰。

任何想法?

+0

意味着什麼這個符號 「NS {字符串,數字}」? – 2012-06-18 09:03:48

+1

@ValeryPavlov它來自bash,它擴展爲NSString和NSNumber。在ObjC中不起作用,只是以這種方式輸入更快。例如。示例{1,2,3}展開爲示例1,示例2,示例3。 – Prody 2012-06-18 15:22:28

回答

9

你不能沒有實例化一個NSManagedObject子類的相關NSManagedObjectContext(以及你可以你已經證明,但結果幾乎肯定不會是你想要的)。

日誌提示中的此第一行:

2009-10-12 21:53:32.228 xxx[2435:20b] Failed to call designated initializer on NSManagedObject class 'Item' 

所有Objective-C類具有(約定)一個指定初始化,這是必須被稱爲初始化方法,無論是明確地或通過其他方便初始化程序。在NSManagedObject的情況下,這是-[NSManagedObject initWithEntity:insertIntoManagedObjectContext:]。未能導致指定的初始化器導致未定義的,並且可能不正確的行爲,因爲實例不能保證被正確初始化。我猜想NSManagedObject初始化程序設置了機制來支持@synthesize的屬性訪問實體的屬性。如果沒有這種機制,實例可能不認爲它可以給@synthesize「d電話和您的來電setData:響應會導致錯誤未找到選擇。

+0

哦,我會嘗試添加上下文。很奇怪,因爲只有這個屬性失敗。 – Prody 2009-10-12 19:19:31

+0

我懷疑失敗與其他屬性不一致是有點運氣。 – 2009-10-12 19:21:08