私は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");
}