我想在故事板上显示我从服务器获取的响应主体,我正在进行连接like this。 当我运行应用程序时,我得到以下响应:
response.body={"id":2,"token":"xyzzyzzyx"}
2013-11-05 11:36:52.405 networkTest3[1327:70b] It Worked: (
"<LoginResponse: 0x8b508a0>"
)
我试图在主视图上显示来自LoginResponse的数据,遵循CoffeeShop示例,但由于RestKit版本(我使用最后一个,现在为0.20),似乎有很多不同之处。我已经知道如何将类中的数据连接到接口上的Outlets,但我无法找到如何从响应主体获取数据。
我试图在LoginResponse类
上使用此方法- (void)loadToken{
RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[LoginResponse class]];
[mapping addAttributeMappingsFromDictionary:@{
@"id": @"status",
@"token": @"token",
}];
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:mapping pathPattern:nil keyPath:@"" statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
NSURL *URL = [NSURL URLWithString:@"http://myurl.com"];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];
RKObjectRequestOperation *objectRequestOperation = [[RKObjectRequestOperation alloc] initWithRequest:request responseDescriptors:@[ responseDescriptor ]];
[objectRequestOperation start];
}
我得到了这个:
2013-11-05 12:09:56.867 networkTest3[1585:3307] E restkit.network:RKObjectRequestOperation.m:576 Object request failed: Underlying HTTP request operation failed with error: (null)
我做错了什么,我的下一步是什么?
编辑:我试图在LoginManager.m
上添加它[responseMapping addAttributeMappingsFromDictionary:@{@"id" : @"id", @"token" : @"token"}];
但我得到了
libc++abi.dylib: terminating with uncaught exception of type NSException
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Unable to add mapping for keyPath token, one already exists...'
答案 0 :(得分:0)
您还没有在您正在制作的结果上设置任何标题,因此服务器不知道如何正确回复请求。如果出现空值错误,则无法更真实地说出来。您的映射看起来很好,您的日志显示已创建相应的对象。
请考虑在请求中至少设置Accepts
标头,或使用RKObjectManager
为您处理请求管理。
如果那不是真正的错误并且您的映射正常(看起来基本上没问题),那么您的问题是您没有调用setCompletionBlockWithSuccess:failure:
因此您永远不会收到对象的回调在映射过程中创建的。
同样,使用RKObjectManager
会使这更容易处理,更难忘记/错过......