2011-12-16 59 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将提供这一项。

相关问题