2012-03-23 54 views
0

我想在我的应用程序上使用RestKit,并且当前在github上使用master作为git子模块。整个事情都安装并运行。然而,当我试图从我的Rails应用程序获取JSON数据,我就RKObjectLoader.m混得RestKit一个BAD_EXC_ACCESS,更具体地说,管线365试图在iOS上使用Restkit - XCode

if ([_delegate respondsToSelector:@selector(request:didLoadResponse:)]) { 
    [_delegate request:self didLoadResponse:_response]; 
} 

不知道这到底是怎么回事,但我应该承担这是Restkit的问题?

这里是我想要做的事:

-(id) init { 
    self = [super init]; 
    if (self) { 
     RKObjectMapping* patientMapping = [RKObjectMapping mappingForClass:[Patient class]]; 

     [patientMapping mapKeyPath:@"id" toAttribute:@"identifier"]; 
     [patientMapping mapKeyPath:@"first_name" toAttribute:@"first_name"]; 
     [patientMapping mapKeyPath:@"middle_initial" toAttribute:@"middle_initial"]; 
     [patientMapping mapKeyPath:@"last_name" toAttribute:@"last_name"]; 
     [patientMapping mapKeyPath:@"email" toAttribute:@"email"]; 
     [patientMapping mapKeyPath:@"password_hint_question" toAttribute:@"password_hint_question"]; 
     [patientMapping mapKeyPath:@"password_hint_answer" toAttribute:@"password_hint_answer"]; 

     [[RKObjectManager sharedManager].mappingProvider setMapping:patientMapping forKeyPath:@"patients"]; 
    } 
    return self; 
} 

- (void)loadAll { 
    [[RKObjectManager sharedManager] loadObjectsAtResourcePath:@"/ios_patient.json" delegate:self]; 
} 

所以基本上我实例化这个类并调用LOADALL。我的ios_patient.json返回以下JSON代码:

{"patients": [{"id": 1, "first_name": "John", "last_name": "Appleseed", "email": "[email protected]"}]} 

任何帮助将不胜感激。

+1

您可以启用NSZombieEnabled以了解有关崩溃的更多信息,或者使用带进程ID的malloc_history。 – 2012-03-23 21:13:42

+1

Objective-C变量通常以骆驼命名,因为它的价值。所以你应该仔细检查你的“first_name”变量是否定义为“NSString * firstName”,并且你的映射是“[patientMapping mapKeyPath:@”firstName“toAttribute:@”first_name“]; – 2012-03-24 03:19:40

+0

另外,1.你确定你没有发布你的代表吗? 2.你在使用ARC吗? 3.你是否实现了RKObjectLoader委托方法(request:didLoadResponse :)? – 2012-03-24 03:22:03

回答

0

感谢您的意见。事实证明,RestKit与ARC不兼容,是的,我正在使用它。变量被正确映射(即使它们不是camelcase),代表们也正确设置和实施。我在开发过程中很早就发现了好东西,可以回到非ARC环境。

1

您可以轻松使用ARC和RestKit,只需在RestKit文件上设置-fno-objc-arc即可。