/ / NSPпредикация за намиране само на първото съвпадение - ios, aim-c, core-data, nsarray, nspredicate

NSPпредикация за намиране само на първия мач - ios, objective-c, core-data, nsarray, nspredicate

В Core Data имам поле, наречено UUID което е уникален идентификатор.

Сега искам да извлека един конкретен UUID записват. За това трябва да използвам NSPredicate, Но от това, което знам, предикатът би претърсил цялото хранилище на данни. Да предположим, че има 10 записа и искам да потърся UUID която има стойност на 2, Предикатът ще продължи търсенето, след като бъде намерен 2 (вземане на допълнителни CPU цикли).

Искам да знам дали можем да оптимизираме това. Как мога да накарам предикатът да спре да търси, след като намери първия обект.

Отговори:

2 за отговор № 1

В Core Data използвайте setFetchLimit: по искане за извличане, за да ограничите броя на резултатите. Можете също така да добавите индекс към UUID атрибута, ако ще го използвате често.

Ако вместо това искате да стартирате предиката в масива и да ограничите посещенията, ще трябва сами да повторите масива (enumerateObjectsWithOptions:usingBlock:) и изрично приложете предиката към всеки елемент (evaluateWithObject:). След това, когато намерите съвпадение, използвайте BOOL *stop параметър на блока за прекратяване на итерацията.