0

私は今のところレストキットを使用しています。そして、すべてが完璧に機能しました。しかし今、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。さらに詳細が必要な場合は提供しますが、これが本質的な部分だと思います。

4

0 に答える 0