2013-01-24 2 views
1

저는 Core Data에 익숙하지 않으므로 어리석은 질문 인 경우 유감입니다.NSFetchRequest : FetchBatchSize 및 오류 동작

NSManagedObject 관계에 액세스하여 오류를 발생시켜 자동 생성 요청에 fetchBatchSize 속성을 설정하는 방법이 있습니까?

예를 들어, "Companies"엔티티와 "Companies"에서 "Employees"까지 일대 다 관계가있는 "Employees"엔티티가 있다고합시다. 모든 회사를 검색하기 위해 가져 오기 요청을 한 다음, 한 회사에서 직원을로드하고 싶습니다.

확실한 방법은 다음과 같이 할 것 :

NSSet *employees = [anyCompany employees]; 

을하지만, 어떻게 같은 시간에 너무 많은 데이터를로드하지 않도록 보장하기 위해 fetchBatchSize 속성을 설정합니까?

미리 감사드립니다.

+0

NSSet * employees = [anyCompany employees]'가 데이터를 가져 오지 않으면 "relationship fault"를 반환합니다. 집합에있는 개체의 속성에 액세스 할 때만 오류가 발생하고 필요한 경우이 개체의 속성이 저장소에서 가져옵니다. –

답변

3

fetchBatchSize은 영구 저장소에 대한 한 번의 왕복에서 검색 할 레코드 수를 정의합니다. 예를 들어 하나의 엔티티에 대해 1000 개의 항목이 있고 일괄 처리 크기가 20 인 경우 모든 항목을 가져 오는 가져 오기 요청은 실제로 50 개의 SQL 문을 실행합니다.

가져 오기의 컨텍스트에 따라 매우 효율적이지는 않습니다. 메모리가 문제가되는 경우 일괄 처리 크기로 페치 요청을 조정할 수 있지만 대부분의 경우 정말 걱정할 필요가 없습니다. 그러나 상점에 대한 불필요한 여러 번의 왕복은 성능에 영향을 줄 가능성이 큽니다.

그래서 그냥 자유롭게

aCompany.employees 

같은 표현을 사용하고 코어 데이터는 메모리 관리를 처리 할 수 ​​있습니다. 일반적으로 표시 또는 계산에 실제로 필요한 엔티티 및 속성 만 검색합니다.