사용자가 데이터를 입력하거나 편집 할 수있는 모달보기 컨트롤러가 있습니다. 저장 및 취소 버튼이 있습니다. 그래서,이 viewController 새 NSManagedObjectContext 만들고 속성에 저장하십시오. 사용자 수정 또는 데이터를 입력하는 동안MagicalRecord MR_saveToPersistentStoreWithCompletion very slow
self.controllerContext = [NSManagedObjectContext MR_context];
다음, 난 controllerContext에 대한 이러한 entites entites 및 값을 생성한다.
사용자는 내가 다음을 수행 취소 버튼에 도달하는 경우 :
- (void)cancelButtonClicked {
[self.controllerContext rollback];
[self.controllerContext MR_saveToPersistentStoreWithCompletion:^(BOOL success, NSError *error) {
if (success || error == nil) {
[self dismissViewControllerAnimated:YES completion:nil];
} else {
if (error) {
[ErrorUtil logError:error fromAction:@"TagebuchDetailView Cancel"];
}
[SVProgressHUD showErrorWithStatus:error.localizedDescription];
[self dismissViewControllerAnimated:YES completion:nil];
}
}];
}
이 꽤 잘 작동하고 값 중 어느 것도 저장되지됩니다. 사용자가 저장 버튼을 칠 때, 나는 다음을 수행 : 2-10 entites뿐만 아니라 잘 작동하지만 저장
- (void)saveButtonClicked {
//Last modified setzen
self.selectedEintrag.lastModified = [NSDate date];
self.selectedEintrag.isDirty = [NSNumber numberWithBool:YES];
//Save Context and dismiss
self.subTitleView.navigationBarSubtitle = NSLocalizedString(@"view.subtitle.saving", nil);
[self.controllerContext MR_saveToPersistentStoreWithCompletion:^(BOOL success, NSError *error) {
if (success || error == nil) {
[self dismissViewControllerAnimated:YES completion:nil];
self.subTitleView.navigationBarTitle = nil;
} else {
if (error) {
[ErrorUtil logError:error fromAction:@"TagebuchDetailView Save"];
}
[SVProgressHUD showErrorWithStatus:error.localizedDescription];
[self dismissViewControllerAnimated:YES completion:nil];
}
}];
}
는 상 아이폰 4와 3-5에 5-10 초 정도 걸립니다 아이폰 5. 이것은 적은 양의 저장된 데이터에 대해서는 꽤 길다. 최근에 MagicalRecord 2.2 Release로 업데이트되었습니다.
어떤 아이디어 일 수 있으며 절약 성능을 향상시키는 방법은 무엇입니까? 아마 2.2의 버그일까요? 나는 Magicalrecord의 이전 버전을 사용하고 저축 performace는 최근에 나쁘게되었다. 나는 magicalrecord가 최근에 iOS7에서 업데이트되거나 테스트되는지 확실하지 않습니다.
mainThread 컨텍스트에 저장하지 마십시오. –
그러나 사용자가 데이터를 입력하면 새 엔터티가 컨텍스트에 삽입됩니다. 이러한 액션은 UI 내에서 발생하므로, 객체는 localContext에 삽입됩니다. 그리고 문제는 차단 UI가 아니라 저장 작업의 성능입니다. – Grinarn
5-10 초가 걸린다면 Instruments의 지연을 찾아 내고 거기에서부터 쉽게 이동해야합니다. 게시 한 코드에는 지연이 발생할 것으로 예상되는 내용이 없습니다. –