0

我是 iOS 开发的新手。我想使用 RestKit 访问 Web 服务并将数据映射到我的自定义对象。

我确定正在达到搜索方法。但是,没有触发任何回调方法(didLoadObjects 或 didFailWithError)。我的代码如下。谢谢你的帮助!

编辑:我尝试用一​​个简单的 RKClient 请求做同样的事情,这些回调方法也没有被触发。我还实现了“观察请求进度”方法,这些方法也没有被触发。我没有正确分配代表吗?

编辑 2:看起来请求可能被卡在队列中。如果我强制它异步发送,则会触发“requestWillPrepareForSend”和“requestDidStartLoad”方法。不会触发其他方法。

- (void)search{

NSString *baseURL = @"sws.acpl.lib.in.us:8080/symws/rest/";
NSURL *url=[NSURL URLWithString:baseURL];

RKObjectManager *manager=[RKObjectManager objectManagerWithBaseURL:url];

RKObjectMapping *availabilityMapping = [RKObjectMapping mappingForClass:[TitleAvailabilityInfo class]];

[availabilityMapping mapAttributes:@"totalAvailableCopies", @"holdable", nil];

RKObjectMapping *titleMapping = [RKObjectMapping mappingForClass:[SearchResultsTitle class]];
[titleMapping mapAttributes:@"titleID",@"title",@"author",@"materialType",@"yearOfPublication",@"ISBN",@"callNumber", nil];
[titleMapping mapKeyPath:@"TitleAvailabilityInfo" toRelationship:@"titleAvailabilityInfo" withMapping:availabilityMapping];

RKObjectMapping *searchResponseMapping = [RKObjectMapping mappingForClass:[SearchCatalogResponse class]];
[searchResponseMapping mapAttributes:@"queryID",@"totalHits",@"firstHitDisplayed",@"lastHitDisplayed", nil];
[searchResponseMapping mapKeyPath:@"HitlistTitleInfo" toRelationship:@"results" withMapping:titleMapping];



[manager.mappingProvider setMapping:searchResponseMapping    forKeyPath:@"SearchCatalogResponse"];

[manager loadObjectsAtResourcePath:@"standard/searchCatalog" delegate:self];

}

- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects:(NSArray*)objects {

NSLog(@"loaded");
}

- (void)objectLoader:(RKObjectLoader*)objectLoader didFailWithError:(NSError*)error {
NSLog(@"failed");
}
4

1 回答 1

0

问题出在 URL 上。我在开头省略了“http://”。谢谢你的帮助。

于 2012-08-20T13:18:15.243 回答