ios - RestKit .20 核心数据 postObject EXC_BAD_ACCESS

标签 ios objective-c core-data restkit restkit-0.20

我正在尝试使用 RestKit 处理将更新的 User 对象发布到我的远程 Web 服务。

目前我的 GET 请求似乎工作正常,但我在使用时遇到问题 [[RKObjectManager sharedManager] postObject:updatedUser path:@"path"parameters:nil success:nil failure:nil];

调用此方法会引发 EXC_BAD_ACCESS 异常。

我的映射设置如下,我相信我有 RKRequestDescriptorRKResponseDescriptor

用户响应映射:

RKEntityMapping * userMapping =
[RKEntityMapping mappingForEntityForName:NSStringFromClass([User class])
inManagedObjectStore:[manager managedObjectStore]];

….设置映射(我排除了这个对象上的关系映射)

[manager addResponseDescriptorsFromArray:@[
        [RKResponseDescriptor responseDescriptorWithMapping:userMapping
                                                     method:RKRequestMethodGET
                                                pathPattern:nil 
                                                    keyPath:@"currentUser"
                                                statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)]]]

请求映射:

[manager addRequestDescriptorsFromArray:@[
        [RKRequestDescriptor requestDescriptorWithMapping:[userMapping inverseMapping]
                                              objectClass:[User class]
                                              rootKeyPath:nil
                                                   method:RKRequestMethodPOST]]];

映射似乎设置正常,当我调用 postObject 时抛出 EXC_BAD_ACCESS 异常

测试方法是这样的,_updatedUser 是使用[RKObjectManager sharedManager] getObjectsAtPath:... 获取的CoreData 对象

-(void) doPost{
   //this user is a CoreData object fetched using 
    [_updatedUser setBio:@"This is an update!"];

    RKObjectManager * objectManager = [RKObjectManager sharedManager];
    [objectManager postObject:_updatedUser
                         path:@"update/user"
                   parameters:nil
                      success:…
                      failure:…];

  }

我曾尝试使用 NSZombies 来找出造成这种情况的原因,但运气不佳。

据我所知,问题的开始似乎来自 RKObjectParameterization-[RKObjectParameterization mappingOperation:didSetValue:forKeyPath:usingMapping:] 它看起来就像传递给方法的所有内容都是 nil 或空字符串。

谢谢!

最佳答案

非常感谢 Wain,在我花了太多时间之后,在我打开日志记录后错误立即变得明显:

RKLogConfigureByName("RestKit", RKLogLevelWarning);
RKLogConfigureByName("RestKit/ObjectMapping", RKLogLevelTrace);
RKLogConfigureByName("RestKit/Network", RKLogLevelTrace);

原来我在映射对象之间有一个循环引用。

我有一个一对一的关系,其中一个 User 包含一个 UserProfile

我错误地设置了 UserUserProfile 之间的双向关系映射

[userProfileMapping addPropertyMapping:[RKRelationshipMapping
                  relationshipMappingFromKeyPath:@"user"
                                       toKeyPath:@"user" 
                                     withMapping:userMapping]];

[userMapping addPropertyMapping:[RKRelationshipMapping  relationshipMappingFromKeyPath:@"userProfile"
                 toKeyPath:@"userProfile"
               withMapping:userProfileMapping]];

看来我的死循环是由 userProfileMapping 引起的

感谢 Wain,吸取了日志记录的教训。

关于ios - RestKit .20 核心数据 postObject EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25107023/

相关文章:

ios - AFNetworking - AFHTTPRequestOperationManager 不返回数据

iphone - 使用 PopOverController 填充 TableView - Objective C

iphone - refreshObject 如何在嵌套的托管对象上下文中工作?

ios - 直接从支持 iOS8+ 的 iOS 应用程序重定向到通知设置

java - 如何使用 Java 代码为 iOS 创建钛移动模块?

iphone - 是否有任何 iphone 类可以将图像转换为文本格式?

ios - RESTKit 中的 RKResponseDescriptor 已弃用

ios5 - MagicalRecord iCloud 备份

macos - 使用 Core Data 和 iCloud 添加持久存储时涉及 PFUbiquityPeer 异常

ios - Xcode:如何暂时隐藏 Issue Navigator 中的黄色警告