2010-04-19 3 views
4

XML에서 핵심 데이터로 가끔 가져올 것입니다. 나는 약 50k 개의 엔티티가 추가 될 것이다. 내 질문에 [managedObjectContext 저장 : & 오류]를 얼마나 자주 호출해야합니까? 새로 추가 된 모든 엔티티 또는 모든 x 엔티티에 대해 또는 50K 가져 오기가 끝날 때마다?핵심 데이터 iPhone 50K 레코드를 삽입 할 때 [managedObjectContext save : & error]를 얼마나 자주 호출해야합니까?

나는 모든 10K 및 가져 오기 속도가 크게 올라 갔다하지만 첫 번째 30K 후가와 충돌 할 현재 각 엔티티를 호출하고 단지 주변을 위해 그 일을 시도

:

*** Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <NSCFSet: 0x13e760> was mutated while being enumerated.' 

I 지출하기 전에 너무 많은 시간 거기서 무슨 일이 일어나고 있는지 진단하려고 할 때마다 모든 엔티티를 저장하지 말라는 것을 확인하겠습니까?

저장 호출을하기 전에 엔티티의 수는 엔티티가 사용중인 메모리의 양에 의해 제한됩니까?

+0

그럼, 알아 냈어? 내 상황은 100+ 메시지가 초당 하나씩 나에게 오는데, CPU 비용을 줄이기 위해 어떻게 처리해야할까요? –

답변

4

모든 항목을 저장하지 마십시오. 낭비적이고 비효율적입니다. 달콤한 자리는 데이터에 따라 다르지만 모든 항목보다 분명히 크고 50K 미만입니다.

응용 프로그램의 개발 단계가 진행됨에 따라 1k에서 시작하여 조정할 것을 권장합니다.

오류가 표시되는 경우 데이터 저장과 관련이 거의 없습니다. 변경 가능한 배열을 반복하면서 객체를 제거하거나 추가 할 수 있습니다. 그것은 명백한 이유 때문에 허용되지 않습니다.

+1

이 오류는 두 개의 다른 스레드에서 ManagedObjectContext에 액세스하는 것과 관련 될 수 있습니다. 레코드 수가 적 으면 항상 발생하는 것은 아니지만 관리 객체 수가 증가하면 확률이 증가합니다. –

관련 문제