Mic*_*lch 1 objective-c ios kvc restkit-0.20
我的问题是重复的
然而,虽然原作者发现答案有帮助,但我仍然输了.这个问题有两个单独的引用,这些引用都不足以帮助我(一个完整的初学者KVC和RestKit).
这里有一个参考,给出了这个示例代码
RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[Whatever class]];
[mapping addPropertyMapping:[RKAttributeMapping attributeMappingFromKeyPath:nil toKeyPath:@"someAttribute"]];
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:mapping pathPattern:@"/whatever" keyPath:nil statusCodes:nil];
Run Code Online (Sandbox Code Playgroud)
无论什么课程应该是什么?应该是NSString吗?或者这是否意味着我应该创建一个包含一个属性为NSArray*的包装类?
什么是@"someAttribute"应该是什么?同样,这是否意味着一个包装类,在这种情况下,someAttribute将是我的包装类上属性的名称,即NSArray*?
另一个参考是在这里,虽然它显示从数组提取到"包装类",但包装类只有一个NSNumber,而不是一个数组.因此,不清楚如何将该示例转换为适用于获取整个数组的示例.
作为参考,服务器返回一个字符串数组,就像原始问题一样:["string1","string2","string3"].
UPDATE
这是我尝试过的代码.我已经创建了一个包装类.
@interface CannedResponse : NSObject
@property (strong, nonatomic) NSString * response;
@end
Run Code Online (Sandbox Code Playgroud)
这是映射:
RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[CannedResponse class]];
[mapping addPropertyMapping:[RKAttributeMapping attributeMappingFromKeyPath:nil toKeyPath:@"response"]];
[manager addResponseDescriptor:[RKResponseDescriptor responseDescriptorWithMapping:mapping method:RKRequestMethodGET pathPattern:RESPONSES_API_PATH keyPath:nil statusCodes:nil;
Run Code Online (Sandbox Code Playgroud)
我正在打电话 getObjectsAtPathForRouteName
我得到的是一系列CannedReponses预期的.但是,而不是NSString被放入响应属性.我得到了一个RKMappingSourceObject.现在RKMappingSourceObject确实包含正确的字符串.
我将通过RestKit控制台中的日志记录查看是否可以收集更多线索.
更新#2
如前所述这里通过blakewatters我不这样做在这个例子中的任何映射,可以只是绕过使用RestKit.问题是我在服务层编写的所有代码都在使用RestKit,我盲目地遵循所有调用的模式.对于这个电话,正确的答案可能是弄清楚如何AFNetworking直接访问.
下面是使用blakewatters其他评论的更好的答案在这里
不要将RestKit用于此类请求.使用AFNetworking来完成它.你可以像这样访问AFHTTPClient
[RKObjectManager sharedManager].HTTPClient
Run Code Online (Sandbox Code Playgroud)
然后代码看起来像这样
AFHTTPClient * client = [RKObjectManager sharedManager].HTTPClient;
[client getPath:YOUR_PATH
parameters:nil
success:^(AFHTTPRequestOperation *operation, id responseObject) {
success([NSArray arrayWithArray:responseObject]);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
failure(operation.response.statusCode);
}];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1151 次 |
| 最近记录: |