尝试在 iOS 上使用 Restkit - XCode

Posted

技术标签:

【中文标题】尝试在 iOS 上使用 Restkit - XCode【英文标题】:Trying to use Restkit on iOS - XCode 【发布时间】:2012-03-23 20:34:55 【问题描述】:

我正在尝试在我的应用程序上使用 RestKit,目前在 github 上使用 master 作为 git 子模块。整个事情已安装并运行。但是,当我尝试从我的 rails 应用程序中获取 JSON 数据时,我在 RestKit 上得到了 BAD_EXC_ACCESS,更具体地说是在 RKObjectLoader.m 的第 365 行。

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": "johnappleseed@apple.com"]

任何帮助将不胜感激。

【问题讨论】:

您可以启用 NSZombieEnabled 以了解有关崩溃的更多信息或使用带有进程 ID 的 malloc_history。 Objective-C 变量通常以驼峰命名,因为它的价值。因此,您可能应该仔细检查您的“first_name”变量是否定义为“NSString *firstName”,并且您的映射是“[patientMapping mapKeyPath:@"firstName" toAttribute:@"first_name"];" 另外,1. 你确定你还没有释放你的代表吗? 2. 你在使用 ARC 吗? 3、你是否实现了RKObjectLoader的委托方法(request:didLoadResponse:)? 【参考方案1】:

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

【讨论】:

【参考方案2】:

感谢 cmets。事实证明 RestKit 与 ARC 不兼容,是的,我正在使用它。变量被正确映射(即使它们不是驼峰式),并且代表也被正确设置和实现。好在我处于开发过程的早期并且可以回到非 ARC。

【讨论】:

以上是关于尝试在 iOS 上使用 Restkit - XCode的主要内容,如果未能解决你的问题,请参考以下文章

适用于 iOS 的 RESTKit 和 IPV6

RestKit:当值无效时如何拒绝整个映射

restkit JSON ios - putObject - 发送类型信息

RestKit iOS 教程 - Xcode 无法识别 RestKit 类方法 - 缺少框架?

iOS 7 中的 Restkit 兼容性

一起使用 Realm.io 和 RestKit 时的属性数据类型