私は今のところレストキットを使用しています。そして、すべてが完璧に機能しました。しかし今、json をコア データベースにマップしたいと考えています。これは (10 MB) の JSON です。ここで JSON を確認できます。
マッピングを行う API クラスがあります
-(RKObjectManager *)mapGetItems{
RKEntityMapping* rubriekMapping = [RKEntityMapping mappingForEntityForName:@"Items" inManagedObjectStore:managedObjectStore];
rubriekMapping.identificationAttributes = @[@"itemNum"] ;
[rubriekMapping addAttributeMappingsFromDictionary:@{
@"ItemNum": @"itemNum",
@"ItemDescNl": @"itemDescNl",
@"ItemDescFr": @"itemDescFr",
@"Group1": @"group1",
@"Group2": @"group2",
@"Group3": @"group3",
@"Group4": @"group4",
@"DateCr": @"dateCr",
@"GrpItem": @"grpItem",
@"GrpDesc1": @"grpDesc1",
@"GrpDesc2": @"grpDesc2",
@"GrpDesc1Fr": @"grpDesc1Fr",
@"SalUnitNl": @"salUnitNl",
@"SalUnitFr": @"salUnitFr",
@"LadderQty": @"ladderQty",
@"Netprice": @"netPrice",
@"IsPromo": @"isPromo",
@"IsNew": @"isNew",
}];
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:rubriekMapping
pathPattern:nil
keyPath:@"ds-ttitems.tt-items" statusCodes:[NSIndexSet indexSetWithIndex:200]];
NSArray *arrResponsDescriptor = [[NSArray alloc]initWithObjects:responseDescriptor, nil];
[objectManager addResponseDescriptorsFromArray:arrResponsDescriptor];
return objectManager;
}
そして、dataModel クラスで、このクラスでオブジェクト ストアをセットアップします。これはすべて順調に進んでおり、すべてが正しく設定されています。今、私の要求のために私はこれを行います。
-(void)fetchRubrieken{
API *api = [API new];
RKManagedObjectStore *store = [[ClaesDataModel sharedDataModel] objectStore];
NSManagedObjectContext *context = store.mainQueueManagedObjectContext;
RKObjectManager *objectManager = [api mapGetItems];
NSString *request = @"/claes/items.json";
[objectManager getObjectsAtPath:request parameters:nil
success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
NSError *error = nil;
BOOL success = [store.mainQueueManagedObjectContext save:&error];
if (!success) RKLogWarning(@"Failed saving managed object context: %@", error);
NSLog(@"done fetching");
}
failure:^(RKObjectRequestOperation *operation, NSError *error) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error"
message:[error localizedDescription]
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
NSLog(@"Hit error: %@", error);
}];
NSError *error = nil;
[context save:&error];
}
問題は、それが機能していないことではありません。非常に長い時間がかかります。だから私の質問は、どうすればこれをより速くすることができますか?
誰でも私を助けてくれることを願っています!
敬具、
PS。さらに詳細が必要な場合は提供しますが、これが本質的な部分だと思います。