Czytałem dużo o danych podstawowych ... ale jaki jest skuteczny sposób na obliczenie typu jednostki (jak SQL może zrobić z SELECT count (1) ...). Teraz właśnie rozwiązałem to zadanie, wybierając wszystko za pomocą NSFetchedResultsController
i obliczając liczbę NSArray
! Jestem pewien, że to nie jest najlepszy sposób ...
objective-c
core-data
erazorx
źródło
źródło
countForFetchRequest:error:
stanówNSNotFound
zwracana w przypadku błędu. Ogólnie rzecz biorąc,NSError
obsługa w konwencji kakaowej polega na tym, że wartośćerr
jest nieokreślona (i często niebezpieczna), jeśli nie wystąpi żaden błąd.Żeby było jasne, nie liczysz jednostek, ale wystąpienia określonej jednostki. (Aby dosłownie policzyć jednostki, poproś zarządzany model obiektów o liczbę jego jednostek).
Aby policzyć wszystkie wystąpienia danej jednostki bez pobierania wszystkich danych, funkcja use
-countForFetchRequest:
.Na przykład:
źródło
Szybki
Dość łatwo jest obliczyć całkowitą liczbę wystąpień podmiotu w danych podstawowych:
Przetestowałem to w symulatorze z liczbą obiektów ponad 400 000 i wynik był dość szybki (choć nie natychmiastowy).
źródło
Dodam tylko, że aby uczynić go jeszcze bardziej wydajnym ... a ponieważ jest to tylko liczba, tak naprawdę nie potrzebujesz żadnej wartości właściwości i na pewno, podobnie jak w jednym z przykładów kodu powyżej, nie potrzebujesz również podelementów.
Tak więc kod powinien wyglądać następująco:
Mam nadzieję, że to pomoże.
źródło
Uważam, że najłatwiejszym i najbardziej wydajnym sposobem liczenia obiektów jest ustawienie
NSFetchRequest
typu wyniku naNSCountResultType
i wykonanie goNSManagedObjectContext countForFetchRequest:error:
metodą.źródło
Napisałem prostą metodę narzędziową dla Swift 3 do pobierania liczby obiektów.
źródło
W Swift 3
źródło
To naprawdę tylko to:
„Łódź” to po prostu nazwa jednostki z ekranu Twojego modelu danych:
Co to jest globalne
yourContainer
?Aby skorzystać z podstawowych danych, w pewnym momencie aplikacji, tylko raz, po prostu idziesz
gdzie „rzeczy” to po prostu nazwa pliku modelu danych.
Po prostu miałbyś do tego singletona,
Czyli z dowolnego miejsca w aplikacji
jest twoim pojemnikiem,
Więc w praktyce, aby policzyć dowolną jednostkę, wystarczy
źródło
Jeśli chcesz znaleźć liczbę dla określonego predykowanego pobierania, uważam, że jest to najlepszy sposób:
źródło