В Core Data имам поле, наречено UUID
което е уникален идентификатор.
Сега искам да извлека един конкретен UUID
записват. За това трябва да използвам NSPredicate
, Но от това, което знам, предикатът би претърсил цялото хранилище на данни. Да предположим, че има 10 записа и искам да потърся UUID
която има стойност на 2
, Предикатът ще продължи търсенето, след като бъде намерен 2
(вземане на допълнителни CPU цикли).
Искам да знам дали можем да оптимизираме това. Как мога да накарам предикатът да спре да търси, след като намери първия обект.
Отговори:
2 за отговор № 1В Core Data използвайте setFetchLimit:
по искане за извличане, за да ограничите броя на резултатите. Можете също така да добавите индекс към UUID атрибута, ако ще го използвате често.
Ако вместо това искате да стартирате предиката в масива и да ограничите посещенията, ще трябва сами да повторите масива (enumerateObjectsWithOptions:usingBlock:
) и изрично приложете предиката към всеки елемент (evaluateWithObject:
). След това, когато намерите съвпадение, използвайте BOOL *stop
параметър на блока за прекратяване на итерацията.