我的问题是重复的
但是,虽然原作者发现答案很有帮助,但我仍然迷路了。这个问题有两个单独的参考资料,但都不足以帮助我(一个完整的初学者KVC
)RestKit
。
一个参考是here并给出了这个示例代码
RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[Whatever class]];
[mapping addPropertyMapping:[RKAttributeMapping attributeMappingFromKeyPath:nil toKeyPath:@"someAttribute"]];
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:mapping pathPattern:@"/whatever" keyPath:nil statusCodes:nil];
应该是什么类?应该是 NSString 吗?或者这是否暗示我应该创建一个包装类,它有一个属性是 NSArray *?
@"someAttribute" 应该是什么?同样,这是否暗示一个包装类,在这种情况下 someAttribute 将是我的包装类上的属性名称,即 NSArray *?
另一个参考是here,虽然它显示了从数组中获取“包装类”,但包装类只有一个NSNumber,而不是数组。因此,尚不清楚如何将该示例转换为可用于获取整个数组的示例。
作为参考,服务器返回一个字符串数组,就像原始问题一样:[“string1”,“string2”,“string3”]。
更新
这是我尝试过的代码。我创建了一个包装类。
@interface CannedResponse : NSObject
@property (strong, nonatomic) NSString * response;
@end
这是映射:
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;
我在打电话getObjectsAtPathForRouteName
我得到的是CannedReponses
预期的数组。然而,而不是NSString
被放入响应属性中。我得到一个RKMappingSourceObject
. 现在RKMappingSourceObject
确实包含正确的字符串。
我将查看RestKit
控制台中的日志记录,看看是否可以收集更多线索。
更新#2
正如blakewatters这里提到的,我在这个例子中没有做任何映射,可以绕过使用RestKit
. 问题是我在服务层中编写的所有代码都在使用RestKit
,并且我盲目地遵循所有调用的模式。对于这个电话,正确的答案可能是弄清楚如何AFNetworking
直接访问。