La aplicación se bloquea al intentar cargar una gran cantidad de datos en mi aplicación
Estoy tratando de cargar unJSON
de más de 40 000 registros en miRealm Database
. Aqui esta mi funcion
AFJSONRequestOperation *operation = [[AFJSONRequestOperation alloc]init];
[AFJSONRequestOperation addAcceptableContentTypes:[NSSet setWithObject:@"text/html"]];
operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
NSArray *relations = [JSON copy];
NSLog(@"COUNT SI %d",relations.count);
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSArray *relations = [JSON copy];
RLMRealm *realm = [RLMRealm defaultRealm];
[realm beginWriteTransaction];
for (NSDictionary *dict in relations) {
Relation *relation = [[Relation alloc]init];
relation.rel_address = [NSString stringWithFormat:@"%@",[dict valueForKey:@"Address"]];
relation.rel_balanceTotal = [[dict valueForKey:@"BalanceTotal"]doubleValue];
relation.rel_bank_country_code = [NSString stringWithFormat:@"%@",[dict valueForKey:@"BankCountryCode"]];
relation.rel_bank_number = [NSString stringWithFormat:@"%@",[dict valueForKey:@"BankNumber"]];
relation.rel_city = [NSString stringWithFormat:@"%@",[dict valueForKey:@"City"]];
relation.rel_city_id = [[dict valueForKey:@"CityId"]intValue];
relation.rel_code = [NSString stringWithFormat:@"%@",[dict valueForKey:@"Code"]];
relation.rel_country = [NSString stringWithFormat:@"%@",[dict valueForKey:@"Country"]];
relation.rel_country_code = [NSString stringWithFormat:@"%@",[dict valueForKey:@"CountryCode"]];
relation.rel_customerProspect = [NSString stringWithFormat:@"%@",[dict valueForKey:@"CustomerProspect"]];
relation.rel_customerCode = [NSString stringWithFormat:@"%@",[dict valueForKey:@"CustomerProspectCode"]];
relation.rel_email = [NSString stringWithFormat:@"%@",[dict valueForKey:@"Email"]];
relation.rel_expired_total = [[dict valueForKey:@"ExpiredTotal"]doubleValue];
relation.rel_fax = [NSString stringWithFormat:@"%@",[dict valueForKey:@"Fax"]];
relation.rel_gsm = [NSString stringWithFormat:@"%@",[dict valueForKey:@"GSM"]];
relation.rel_latitude = [[dict valueForKey:@"Latitude"]doubleValue];
relation.rel_longitude = [[dict valueForKey:@"Longitude"]doubleValue];
relation.rel_memo = [NSString stringWithFormat:@"%@",[dict valueForKey:@"Memo"]];
relation.rel_name = [NSString stringWithFormat:@"%@",[dict valueForKey:@"Name"]];
relation.rel_phone = [NSString stringWithFormat:@"%@",[dict valueForKey:@"Phone"]];
relation.rel_turnovertotal = [[dict valueForKey:@"TurnoverTotal"]doubleValue];
relation.rel_vat_country_code = [NSString stringWithFormat:@"%@",[dict valueForKey:@"VATCountryCode"]];
relation.rel_vat_number = [NSString stringWithFormat:@"%@",[dict valueForKey:@"VATNumber"]];
relation.rel_website = [NSString stringWithFormat:@"%@",[dict valueForKey:@"Website"]];
relation.rel_zipcode = [NSString stringWithFormat:@"%@",[dict valueForKey:@"ZipCode"]];
[realm addObject:relation];
}
[realm commitWriteTransaction];
compblock(YES);
});
} failure:^( NSURLRequest *request ,NSHTTPURLResponse *response ,NSError *error , id JSON ){
NSLog(@"error is %@",error);
}];
[operation start];
Todo funciona bien para 10 000 objetos. Pero cuando voy a 40 000, me sale este error:
Communications error: <OS_xpc_error: <error: 0x356dc614> { count = 1, contents =
"XPCErrorDescription" => <string: 0x356dc86c> { length = 22, contents = "Connection interrupted" }
}>
¿Alguien puede ayudarme por favor? Gracias por adelantado !!
EDITAR
Se bloquea antes del registro "COUNT SI". ¿Entonces creo que tiene algo que ver con AFNetworking? También noté que no se bloquea en el simulador ...