2015-01-30 2 views
0

처음으로 CoreData를 사용해 보았습니다. 믿거 나 말거나합니다.CoreData 객체의 삭제가 느림

나는 가끔이 같은 금액에 대해, 새로운 사람과 모든 오브젝트를 교체해야합니다 엔티티 A.

약 10,000 개체가됩니다. 모든 엔티티를 삭제하는 데 오랜 시간이 걸리기 때문에 나는 둘러 보았고 어떤 사람들은 다른 모든 객체를 포함하는 "콜렉션"객체를 만들면 콜렉션을 삭제 한 다음 코어 데이터를 캐스케이드로 삭제할 수 있다고 제안하는 것처럼 보였습니다. 다른 개체. 지금까지 정확한 시간 확인을 수행 할 수 없었지만 변경 사항이있는 것 같지 않습니다. 내가 뭐 놓친 거 없니?

+0

항상 모든 것을 삭제하고 다시 시작? – Wain

+0

당신은 그냥해야 의미 기존 항목을 업데이트 하시겠습니까? 더 복잡하게 들립니다 . – Jonny

+0

아니요, 질문입니다. 항상 모든 항목을 삭제하거나 언젠가는 삭제 하시겠습니까? 예를 들어 90 % 만 삭제합니다. 그리고 데이터 저장소에는 이러한 엔티티 또는 삭제되지 않는 다른 항목 만 포함됩니까? – Wain

답변

1

가장 간단한 옵션은 코어 데이터 스택을 분리 한 다음 디스크에서 데이터 저장소를 삭제하는 것입니다 (바람직하게는 영구 저장소 코디네이터 removePersistentStore:error:을 사용하는 것이 좋습니다.)이 작업은 모든 데이터를 삭제하는 경우에만 작동하며 나중에 코드를 다시 실행하여 수동으로 삭제해야하는 경우 코어 데이터 스택.

는 당신은 일괄 컨텍스트를 저장해야합니다 그리고 당신은 최고의 배치 크기를 찾기 위해 프로필해야합니다.

+0

좋아, 나는 그것에 대해 생각했지만 실제로는 앞으로는 같은 데이터 저장소에 다른 것들을 보관하고 싶다면 잘 할 수있는 일이 아니라고 생각한다. – Jonny

+0

그런 다음 사용자가 수행중인 작업에 대해 판단을 요청할 수 있습니다. 잠재적으로 데이터 저장소를 여러 부분으로 나누고 백그라운드에서 항목을 삭제하면서 사용자가 포 그라운드에서 계속 수행 할 수 있도록합니다. 아무 것도 대답이 없습니다 (물론 당신의 모든 상황과 앞으로의 방향을 모른 채). – Wain

관련 문제