我正在学习 Rest-kit。我正在尝试解析此网址 https://api.coursera.org/api/catalog.v1/courses?fields=language,shortDescription
我创建了一个 Courses 类。
@interface Courses : NSObject
@property (nonatomic, strong) NSString *name;
@end
在viewcontroller中我写了下面的代码
- (void)viewDidLoad
{
[super viewDidLoad];
[self configureRestKit];
[self loadCourses];
}
- (void)configureRestKit
{
// https://api.coursera.org/api/catalog.v1/courses?fields=language,shortDescription
// initialize AFNetworking HTTPClient
NSURL *baseURL = [NSURL URLWithString:@"https://api.coursera.org"];
AFHTTPClient *client = [[AFHTTPClient alloc] initWithBaseURL:baseURL];
// initialize RestKit
RKObjectManager *objectManager = [[RKObjectManager alloc] initWithHTTPClient:client];
// setup object mappings
RKObjectMapping *courseMapping = [RKObjectMapping mappingForClass:[Courses class]];
[courseMapping addAttributeMappingsFromDictionary:@{
@"name":@"name"
}];
// register mappings with the provider using a response descriptor
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:courseMapping method:RKRequestMethodGET pathPattern:@"/api/catalog.v1/courses?fields=language,shortDescription" keyPath:@"elements" statusCodes:[NSIndexSet indexSetWithIndex:200]];
[objectManager addResponseDescriptor:responseDescriptor];
}
- (void)loadCourses
{
[[RKObjectManager sharedManager] getObjectsAtPath:@"/api/catalog.v1/courses?fields=language,shortDescription" parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
NSLog(@"%@", mappingResult.array);
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
NSLog(@"What do you mean by 'there is no Courses?': %@", error);
}];
}
错误:_Error Domain=org.restkit.RestKit.ErrorDomain Code=1001 “没有响应描述符匹配加载的响应。” 我没有在成功 block 中得到响应。请纠正我。提前致谢
最佳答案
不要将查询参数添加到响应描述符上的路径模式中,并将它们设置为请求上的参数:
pathPattern:@"/api/catalog.v1/courses"
一般来说,我还会说 /api/catalog.v1/
应该是基本 URL 的一部分,这样您就可以:
NSURL *baseURL = [NSURL URLWithString:@"https://api.coursera.org/api/catalog.v1/"];
...
... pathPattern:@"courses" ...
...
... getObjectsAtPath:@"courses" parameters:@{ @"fields" : @"language,shortDescription" } ...
关于ios - Restkit 基本 url 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27378962/