Я скопировал все локальные контакты и сохранил их в основных данных, теперь, когда я использую инструмент времени профайлера, это показывает, что большое количество времени тратится на удаление локальных контактов из моего приложения. мне нужны любые методы оптимизации для улучшения производительности моего кода и приложений.Оптимизация удаления контактов
Вот мой код для удаления контактов из основных данных:
+(void)deleteContacts
{
[[LoadingIndicator currentIndicator]displayActivity:@"Deleting Old contacts"];
//fetch the data from core data and delete them because you are going to sync again
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication]delegate];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
// Edit the entity name as appropriate.
NSManagedObjectContext *managedObjectContext=[appDelegate managedObjectContext];
fetchRequest.entity = [NSEntityDescription entityForName:@"PersonEvent" inManagedObjectContext:managedObjectContext];
NSInteger *contactsIdentifier=1;
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"sourceflag == %d", contactsIdentifier];
NSArray * persons = [managedObjectContext executeFetchRequest:fetchRequest error:nil];
//error handling goes here
if (persons.count>0) {
for (NSManagedObject * person in persons) {
[managedObjectContext deleteObject:person];
}
}
NSError *saveError = nil;
[managedObjectContext save:&saveError];
[[LoadingIndicator currentIndicator]displayCompleted:@"Done"];
[[LoadingIndicator currentIndicator]hide];
NSLog(@"Finished deleting local contacts..");
}
Время профайлер показывает мне 94,3% времени, затрачиваемого на [managedObjectContext сохранить: & saveError];
Любая помощь будет оценена
Благодаря
+1 для вопросов, связанных с производительностью приложения. –
'NSInteger * contactsIdentifier = 1;' выглядит подозрительно. Это указатель на NSInteger, но вы, вероятно, хотели использовать сам NSInteger. – eofster