gpt4 book ai didi

ios - 已填充 RestKit 映射结果,但未设置核心数据实体

转载 作者:行者123 更新时间:2023-11-29 10:50:51 25 4
gpt4 key购买 nike

我正在尝试执行多部分 POST 以创建带有附加图像的新用户。 RKMappingResult 显示它成功映射了响应,但由于某些原因它没有正确映射到 User 实体对象,因为所有这些属性仍然是 nil映射后。

RKMappingResult:

(lldb) po mappingResult
<RKMappingResult: 0xc8d04a0, results={
user = "<User: 0xc8d4360> (entity: User; id: 0xc676560 <x-coredata://68DA437E-D836-48F7-B4CE-CC08EC38B98F/User/p15> ; data: {\n accessToken = c81453227a39e16e396218d3a1ef0d80;\n actions = nil;\n createdAt = \"2013-12-11 15:34:45 +0000\";\n email = \"user@users.com\";\n firstName = Some;\n fullName = \"Some User\";\n lastName = User;\n timezone = nil;\n updatedAt = \"2013-12-11 15:34:45 +0000\";\n username = nil;\n uuid = \"de565267-eaf9-4cbf-a63e-44dd7df405aa\";\n})";
}>

核心数据用户实体(映射后):

(lldb) po newUser
<User: 0xc8ac300> (entity: User; id: 0xc8c5050 <x-coredata:///User/t1251A6D9-8FB8-4AF2-AFA4-ADB61F39397F2> ; data: {
accessToken = nil;
actions = nil;
createdAt = nil;
email = nil;
firstName = nil;
fullName = "(null) (null)";
lastName = nil;
timezone = nil;
updatedAt = nil;
username = nil;
uuid = nil;
})

代码:

User *newUser = [User createNewUser];
NSDictionary *userParams = @{kJsonUser : params};

NSURLRequest *request = [[APIClient objectManager] multipartFormRequestWithObject:newUser method:RKRequestMethodPOST path:kEndPointCreateListUsers parameters:userParams constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
UIImage *image = [params objectForKey:kJsonImage];
if (image) {
[formData appendPartWithFileData:UIImageJPEGRepresentation(image, 1.0)
name:@"user_image"
fileName:@"user_image.jpeg"
mimeType:@"image/jpeg"];
}
}];
RKManagedObjectRequestOperation *operation = [[APIClient objectManager] managedObjectRequestOperationWithRequest:request managedObjectContext:[APIClient mainThreadContext] success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
[self handleSignUpSuccessForUser:newUser];
success([newUser uuid]);
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
[self handleSignUpFailure];
failure([error localizedDescription]);
}];
[[APIClient objectManager] enqueueObjectRequestOperation:operation];

我注意到的一件事是映射结果中 User 的内存地址与 newUser 对象不同。如果我使用普通(非多部分)请求,那么它会很好地映射并设置核心数据对象。

非常感谢您提供的任何帮助!

最佳答案

  • 来自映射结果:<User: 0xc8d4360>
  • 来自您的调试日志:<User: 0xc8ac300>

因此您正在比较/记录不同的对象。

您创建 POST 请求的方式意味着您应该销毁 newUser提出请求后,请使用 User而是在映射请求中提供给您的对象。

如果您使用的是 RKObjectManager然后它会更新 newUser适合您,但您无法选择将图像数据添加到 POST 中。目前newUser仅用于生成 request并且不可用于响应的映射。

关于ios - 已填充 RestKit 映射结果,但未设置核心数据实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20523569/

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