gpt4 book ai didi

ios - RestKit .20 核心数据 postObject EXC_BAD_ACCESS

转载 作者:行者123 更新时间:2023-11-29 02:46:07 25 4
gpt4 key购买 nike

我正在尝试使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com