2011-12-16 54 views
0

我想在Xcode 4.2(iOs 5)中將Xcode 3(iOS 4.3)項目轉換爲ARC,但是當我嘗試爲了預先檢查項目,在繼續前我需要修復一些不同的錯誤。一這些錯誤的是以下信息:核心數據:「接收器類型,例如沒有聲明一個選擇器的方法...」

*「接收器類型‘分配’例如消息不聲明與選擇器‘可分級’*的方法,

其中作業是核心數據管理對象和可分級是屬性...

這裏就是我得到了錯誤的行:

if ([[[[assignment gradable]description]description] isEqualToString:@"true"]) { 

這裏是爲了更好地理解:

for(int i = 0; i < [assignmentArrays count]; i++) { 
     for (Assignment* assignment in [assignmentArrays objectAtIndex:i]) { 
      if ([[[[assignment gradable]description]description] isEqualToString:@"true"]) { 
       [[gradableAssignmentsArray objectAtIndex:i] addObject:assignment]; 
      } 
     } 
    } 

[assignmentArrays release]; 

所以,如果我理解正確的話,我需要聲明的方法所以我可以在這裏使用它......但作爲一個核心數據對象,我對這個有點困惑......我做了一些研究,但找不到任何與核心數據相關的內容。

在此先感謝! :)

+0

你試過`assignment.gradable`嗎? – jcm 2011-12-16 05:23:54

+0

@jcm是的,我有...沒有工作......謝謝你的提示! ;) – Johan 2011-12-16 15:58:28

回答

2

[assignment valueForKey:@"gradable"]如果它是一個NSManagedObject,你沒有子類,應該使編譯器更安靜,但如果該對象沒有鍵@「可分級」,你將有一個運行時異常,並將崩潰。 (你也可以在子類上使用)
如果你已經創建了NSManagedObject的子類,並且想使用其他的valueForKey(因爲字符串更容易出錯),請聲明該子類的屬性,以便編譯器可以找到它。在.m中,您不會在這種情況下使用@synthesis,但@dynamic關鍵字基本上告訴編譯器,我沒有該屬性的實現,但在運行時您將擁有一個。 Core Data將提供這一項。

相關問題