У меня есть следующий код, и мне было интересно, есть ли способ сделать это быстрее. В основном мое приложение загружает некоторые JSON (около 4000 записей) из сети и обновляет или создает мои управляемые объекты на основе данных. На данный момент это довольно медленно, и я понимаю, почему, но я новичок в основных данных, поэтому мне было интересно, есть ли что-нибудь, что я могу сделать, чтобы сделать это быстрее?Обновление основных данных, если существует или создать новый управляемый объект. Могу ли я сделать это быстрее?
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Company" inManagedObjectContext:managedObjectContext];
[request setEntity:entity];
NSMutableArray *coreDataArray = [[managedObjectContext executeFetchRequest:request error:nil] mutableCopy];
[request release];
for (NSDictionary *dict in arr) {
NSArray *filtered = [coreDataArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"(code == %@)", [dict objectForKey:@"Code"]]];
//NSLog(@"COREDATA ARRAY: %d FILTERED ARRAY: %d CODE: %@ COREDATA FIRST CODE: %@", [coreDataArray count], [filtered count], [dict objectForKey:@"Code"], [[coreDataArray objectAtIndex:0] code]);
if ([filtered count] > 0) {
Company *c = [filtered objectAtIndex:0];
if ([dict objectForKey:@"Defunct"]) {
NSLog(@"DELETED DEFUNCT COMPANY");
[managedObjectContext deleteObject:c];
} else {
[c populateWithJSONDictionary:dict];
}
} else {
Company *c = (Company *)[NSEntityDescription insertNewObjectForEntityForName:@"Company" inManagedObjectContext:managedObjectContext];
[c populateWithJSONDictionary:dict];
}
float percent = (float)[arr indexOfObject:dict]/[arr count];
[self performSelectorInBackground:@selector(updateProgressView:) withObject:[NSString stringWithFormat:@"%f",percent]];
}
[coreDataArray release];
Большое спасибо за помощь, которую вы можете дать.
вы уверены, что выборка данных JSON не выдавать для замедления вашего приложения вниз, если вы используете SBJSON. Потому что он медленнее других почти 9 раз. А также, пожалуйста, примите некоторые ответы. – Robin
привет, нет разбора JSON очень быстро, я использую JSON Framework. Я уверен, что это фильтрованный массив внутри цикла for, который замедляет его. – Marky