ios - 如何使用restkit获取一个简单的json字符串数组

标签 ios objective-c restkit-0.20 kvc

我的问题是重复的

RestKit: how to fetch a simple JSON array of strings?

但是,虽然原作者发现答案很有帮助,但我仍然迷路了。这个问题有两个单独的引用资料,但都不足以帮助我(KVCRestKit 的完整初学者)。

一个引用是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

如前所述here通过 blakewatters 我在这个例子中没有做任何映射,可以绕过使用 RestKit .问题是我在服务层编写的所有代码都使用RestKit我盲目地遵循所有电话的模式。对于这个电话,正确的答案可能是弄清楚如何访问 AFNetworking直接地。

最佳答案

这是使用来自 blakewatters here 的另一条评论的更好答案

不要将 RestKit 用于这样的请求。使用 AFNetworking 来做到这一点。你可以像这样访问 AFHTTPClient

[RKObjectManager sharedManager].HTTPClient

然后代码看起来像这样
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);
        }];

关于ios - 如何使用restkit获取一个简单的json字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21002196/

相关文章:

ios - 指向框架中泄漏的仪器——发现泄漏在其他地方(为什么?)

ios - 第三方 ObjC 框架依赖于 Swift 应用程序中的动态 Cocoa 框架

ios - Chartboost 代表无法快速工作

ios - 从 XIB 创建新的 UIView 对象

objective-c - 如何检测应用程序是否基于文档?

cocoa - 如何在RestKit 0.20中实现 `hasOne:withMapping:`?

ios - 尝试使用RestKit发出POST请求并将响应映射到Core Data

iphone - 如何在标签中增加 NSTimer 的时间?

objective-c - 当您在带有数组的数组中调用方法removeAllObjects 时会发生什么?

ios - RestKit .20 RKRequestDescriptor postObject - (400-499) 中的预期状态代码,得到 200