Rozmiar partii nie działa w przypadku używania kontekstów nadrzędny / podrzędny
Udało mi się to potwierdzić w mojej aplikacji i szybkiej przykładowej aplikacji, którą utworzyłem, aby to potwierdzić. Oto konfiguracja:
Masz dwa konteksty obiektów zarządzanych:
masterMOC: NSPrivateQueueConcurrencyType, tied to persistent store coordinator
mainMOC: NSMainQueueConcurrencyType, child of masterMOC, NOT tied to any store coordinator
Ta konfiguracja została zainspirowana wideo WWDC, które sugeruje, że możemy zapisać na wątku w tle, ustawiającmasterMOC
do kolejki prywatnej i powiązać ją z trwałym sklepem. Jeśli skonfigurujeszNSFetchedResultsController
używającmainMOC
(i to musi byćmainMOC
ponieważ to ten jest związany z interfejsem użytkownika) i ustawfetchBatchSize
, wielkość partii jest ignorowana i wszystkie jednostki są od razu narażone na błędy. Włączyłem adnotacje debugowania SQLite, a podczas przewijania tysięcy wierszy (przy wielkości partii 20) żadne błędy nie są uruchamiane.
Jeśli zrobię jedną prostą regulację, a mianowicie związanie trwałego koordynatora sklepu zmainMOC
i uczyń go kontekstem roota (to znaczy, że nie jest już dzieckiem mistrza), wtedy rozmiar partii działa doskonale, a gdy przewijam tysiące wierszy, uruchamianych jest kilka błędów.
Czy to oczekiwane zachowanie? Czy czegoś mi brakuje?
Możesz pobrać przykładowy projekttutaj