problem:Rdzeń danych vs NSFileManager
używam jakiegoś czasu mój własny system cache za pomocą NSFileManager
. Zwykle dane, które otrzymuję, to JSON, a ja po prostu zapisuję słownik bezpośrednio w pamięci podręcznej (w folderze Dokumenty). Kiedy będę go potrzebować, po prostu go wezmę. Wdrażam też, czasami, gdy czuję, że jest lepiej, NSDictionary
w folderze głównym z kluczami/wartościami dla ścieżki dla danego zasobu. Na przykład:
Zasób o pogodzie w Genewie 17/02/2013, więc chciałbym mieć klucz o nazwie GE_17_02_2013 i wartość ścieżki do NSDictionary
z informacją.
Zwykle nie potrzebuję żadnych skomplikowanych zapytań. Ale w jakiś sposób iz tego, co czytałem, kiedy masz dużo danych, powinieneś trzymać się Core Data. W moim przypadku zwykle mam dużo danych, ale nigdy nie czułem, że aplikacja zanika lub cierpi pod względem wydajności. Więc moje pytania to:
W tym przypadku, w którym czasami (rzecz pogoda była tylko przykładem ) muszę po prostu usunąć wszystkie dane (kanał Twittera, na przykład) i zastąpienie go przez całkowicie nowy strumień danych, jest Core Dane warte? Myślę, że usunięcie wszystkich danych i wstawienie (wypełnienie) tego jest cięższe niż przechowywanie
NSDictionary
i zastępowanie starego.Czasami byłoby envolve zdjęć, plików tekstowych, etc i
NSFileManager
robi to doskonale, więc jakie korzyści mogłoby przynieść podstawowe Dane w takich przypadkach?
P.S: Widziałem tylko this post, gdzie tego rodzaju pytanie jest wykonany i numery udowodnić, który z nich jest rzeczywiście szybciej. Mimo to chciałbym również odpowiedzi empirycznej.
Pamięć podręczna jest bardziej przeznaczona do scenariuszy offline. Tak więc w normalnych warunkach z dostępem do Internetu zwykle zastępuję przechowywane dane bardzo często, dlatego miałem obawy. Kolejną zaletą jest fakt, że używa się 'NSDictionary' i nie ma potrzeby, aby wiedzieć, co jest w jego środku (jak jest skomponowany). Czy miałoby sens posiadanie 'NSManagedObject' z tylko' NSDictionary'? – Peres
Pamięć podręczna jest ważna również dla lokalnego systemu plików. Dostęp do systemu plików jest znacznie wolniejszy niż dostęp do pamięci. Nie jestem pewien, dlaczego nie musisz wiedzieć, co jest w słowniku, nie czytaj/nie interpretuj tego jako punktu.Jeśli przechowujesz plik tylko jakikolwiek inny, który jest serializowanym słownikiem, to tak, nie ma sensu używać Core Data –
To znaczy, wiem, co jest w środku, ale jeśli z jakiegoś powodu API się zmieni i doda inne rzeczy , Nie jestem do tego ograniczony. – Peres