gpt4 book ai didi

objective-c - 设置 RestKit 时出错

转载 作者:行者123 更新时间:2023-11-29 04:22:49 24 4
gpt4 key购买 nike

我的 JSON 具有以下结构:

{
"<Person>k__BackingField" = {
"_email" = "name@domain.com";
"_emailUpdate" = 1;
"_firstName" = "First";
"_lastName" = "Last";
};
"<SharedKey>k__BackingField" = "some-long-random-string";
}

我正在使用restkit 作为此人登录。它创建帖子,并正确获取该响应。我的映射设置如下:

+(void)ConfigureAPI
{
[super ConfigureAPI];
// Initialize RestKit
[RKObjectManager managerWithBaseURLString: @"www.api_root.com/";
Class<RKParser> parser = [[RKParserRegistry sharedRegistry] parserClassForMIMEType:@"application/json"];
[[RKParserRegistry sharedRegistry] setParserClass:parser forMIMEType:@"text/plain"];

RKObjectMapping *mapping;

// Person
mapping = [RKObjectMapping mappingForClass:[Person class]];
[mapping mapKeyPath:@"_email" toAttribute:@"email"];
[mapping mapKeyPath:@"_emailUpdate" toAttribute:@"emailUpdate"];
[mapping mapKeyPath:@"_firstName" toAttribute:@"firstName"];
[mapping mapKeyPath:@"_lastName" toAttribute:@"lastName"];
[[RKObjectManager sharedManager].mappingProvider setMapping:mapping forKeyPath:@"<Person>k__BackingField"];
}

当我运行应用程序并调用获取 JSON 响应的函数时,出现以下错误:

Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<__NSCFString 0x7b41800> valueForUndefinedKey:]: this class is not key value coding-compliant for the key <Person>k__BackingField.'

有人知道我为什么会收到这个吗?一切似乎都设置正确

编辑

如果它有帮助,这就是我处理响应的方式:

    // when you get the response...
request.onDidLoadResponse = ^(RKResponse *response){
RKObjectMapper *mapper = [RKObjectMapper mapperWithObject:[response bodyAsString] mappingProvider:[RKObjectManager sharedManager].mappingProvider];

Person *person = nil;
RKObjectMappingResult *mappingResult = [mapper performMapping];
person = [mappingResult asObject];
};

最佳答案

在将响应字符串传递给 RKObjectMapper 之前,您没有将其转换为 JSON 对象。您传入的响应的字符串值不响应 valueForKey: 这解释了您收到的异常。您可以轻松地将其转换为这样的对象:

request.onDidLoadResponse = ^(RKResponse *response){

NSError *error;
id jsonObject = [response parsedBody:&error];

if(error)
NSLog(@"Error parsing JSON: %@", error.localizedDescription);
else {
RKObjectMapper *mapper = [RKObjectMapper mapperWithObject:jsonObject mappingProvider:[RKObjectManager sharedManager].mappingProvider];

Person *person = nil;
RKObjectMappingResult *mappingResult = [mapper performMapping];
person = [mappingResult asObject];
}
};

关于objective-c - 设置 RestKit 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12747039/

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