- (BOOL)do_a_Restkit_request_and_return_a_boolean
{
[manager postObject:nil path:@"/mypath" parameters:@{@"password":password} success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
myResult = [mappingResult firstObject] == 5;
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
}];
return myResult;
}
您好我想像上面的Synchronous一样进行RestKit调用,以便在调用Success块后返回myResult。
答案 0 :(得分:4)
你可以使用这样的方法:
NSMutableURLRequest *request = // create a request…
RKObjectRequestOperation *operation = [manager objectRequestOperationWithRequest:request success:nil failure:nil];
[operation start];
[operation waitUntilFinished];
BOOL myResult = NO;
if (!operation.error) {
myResult = [operation.mappingResult firstObject] == 5;
}
return myResult;
注意:
nil
传递给完成块。)waitUntilFinished
将阻止您所使用的任何线程,因此请确保它不是主线程。request
,请参阅Creating Request Objects in the RKObjectManager Class Reference。答案 1 :(得分:1)
您需要接受网络通信的异步特性和响应的后台处理,或者使用专门用于发出同步请求的不同API /技术。 RestKit和AFNetworking更多地基于前者。
拥抱异步是最好的选择......
也就是说,您可以使用RestKit创建NSURLRequest
,然后使用NSURLConnection
同步下载响应,然后使用RKMapperOperation
执行映射(并等待{ {1}})。