Я пытаюсь выяснить, есть ли у меня правильное понимание предварительной выборки с помощью Core Data. Я выполняю запрос на выборку с параметром batchSize 20 для объекта Message, который имеет отношение один к одному с свойством MBDate. Я упреждающий это свойство:Должен ли предварительный выбор возвращать любые неисправности?
[fetchRequest setRelationshipKeyPathsForPrefetching:
[NSArray arrayWithObjects:@"date", nil]];
Команда упреждающей проходит через, как показано на этом выходе:
CoreData: annotation: Prefetching with key 'date'. Got 9 rows.
CoreData: annotation: total fetch execution time: 0.0094s for 20 rows
Однако в только первую партию, если я
if(message.date.isFault) NSLog(@"isFault");
,
он всегда выводит 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>
Почему упреждающие не проходят? Почему мои объекты все еще неисправны? Я знаю, что трудно дать какие-то определенные ответы, но любые советы или идеи были бы замечательными!
Но, видите ли, это было ошибкой со скоростью, намного меньшей, чем мой размер партии, как и каждые 5 объектов, которые были сбиты с ошибкой, когда мой размер партии составлял 100. В результате я получил отдельную выборку для получения моих дат и размещения их в массиве , который автоматически «предваряет» их для меня, не делая ничего другого – Snowman