코어 데이터로 프리 페칭에 대한 올바른 이해가 있는지 확인하려고합니다. MBDate 속성과 일대일 관계가있는 Message 객체의 batchSize가 20 인 가져 오기 요청을 실행하고 있습니다. 내가프리 페치가 오류를 반환해야합니까?
if(message.date.isFault) NSLog(@"isFault");
,
CoreData: annotation: Prefetching with key 'date'. Got 9 rows.
CoreData: annotation: total fetch execution time: 0.0094s for 20 rows
그러나이 출력 같이
이[fetchRequest setRelationshipKeyPathsForPrefetching:
[NSArray arrayWithObjects:@"date", nil]];
프리 페치 명령을 통해 진행 :이 속성을 프리 페치
내가 프리 페치하더라도 항상 isFault
을 출력합니다! 나는 MBDate 객체의 속성 고장 요청 화재에 액세스하려고한다면 :
CoreData: sql: SELECT 0, t0.Z_PK, t0.Z_OPT, t0.ZDATE, t0.ZDATESTRING FROM ZMBDATE t0 WHERE t0.Z_PK = ?
CoreData: annotation: sql connection fetch time: 0.0008s
CoreData: annotation: total fetch execution time: 0.0014s for 1 rows.
CoreData: annotation: fault fulfilled from database for : 0x85d22b0 <x-coredata://736D04C4-7DB3-40B7-B208-79B5DFD68260/MBDate/p61>
이유는 프리 페치가 겪고되지 않는 이유는 무엇입니까? 왜 내 물건은 여전히 결함이 있습니까? 명확한 답변을 제공하는 것이 어렵다는 것을 알고 있지만 팁이나 아이디어는 훌륭합니다.
하지만 배치 크기가 100이었을 때 오류가 발생하는 매 5 개의 개체처럼 내 배치 크기보다 훨씬 작은 비율로 오류가 발생하는 것을 확인하십시오. 내 날짜를 가져 와서 배열에 배치하기 위해 별도의 가져 오기를 실행하는 결과가 발생했습니다. , 자동으로 "프리 페치 (prefetch)"하여 다른 것을하지 않고 나를 위해 – Snowman