Dane podstawowe - Core Data

Podstawowe dane
Podstawowe dane
Deweloper(zy) Apple Inc.
Wersja stabilna
3.2.0
System operacyjny macOS , iOS , tvOS , watchOS
Rodzaj Narzędzie systemowe
Licencja Prawnie zastrzeżony
Strona internetowa Przewodnik programowania Apple Developer Core Data

Core Data to graf obiektów i struktura trwałości udostępniana przez firmę Apple w systemach operacyjnych macOS i iOS . Został wprowadzony w systemach Mac OS X 10.4 Tiger i iOS wraz z pakietem iPhone SDK 3.0. Pozwala to dane zorganizowane przez relacyjnym modelu podmiot atrybut być szeregowane do XML , binarny lub SQLite sklepach. Danymi można manipulować za pomocą obiektów wyższego poziomu reprezentujących jednostki i ich relacje. Core Data zarządza wersją serializowaną, zapewniając zarządzanie cyklem życia obiektów i wykresami obiektów , w tym trwałość . Podstawowe dane łączą się bezpośrednio z SQLite , izolując programistę od bazowego SQL .

Podobnie jak Cocoa Bindings obsługują wiele obowiązków kontrolera w projekcie model-widok-kontroler , Core Data obsługuje wiele obowiązków modelu danych. Obsługuje między innymi zarządzanie zmianami, serializację na dysk, minimalizację zużycia pamięci i zapytania o dane.

Stosowanie

Dane podstawowe opisują dane za pomocą modelu danych wysokiego poziomu wyrażonego w kategoriach jednostek i ich relacji oraz żądań pobierania, które pobierają jednostki spełniające określone kryteria. Kod może pobierać i manipulować tymi danymi na poziomie czysto obiektowym, nie martwiąc się o szczegóły przechowywania i pobierania. Obiekty kontrolerów dostępne w programie Interface Builder mogą bezpośrednio pobierać te encje i manipulować nimi. W połączeniu z powiązaniami Cocoa interfejs użytkownika może wyświetlać wiele składników modelu danych bez konieczności posiadania kodu w tle.

Na przykład: programista może pisać program do obsługi wizytówek vCard . Aby nimi zarządzać, autor zamierza wczytać vCard do obiektów, a następnie zapisać je w jednym większym pliku XML. Korzystając z danych podstawowych, deweloper przeciągnąłby swój schemat z projektanta danych w Xcode do okna konstruktora interfejsu, aby utworzyć graficzny interfejs użytkownika dla swojego schematu. Mogli następnie napisać standardowy kod Objective-C lub Swift, aby odczytać pliki vCard i umieścić dane w jednostkach zarządzanych Core Data. Od tego momentu kod autora manipuluje tymi obiektami Core Data, a nie bazowymi wizytówkami vCard. Połączenie Saveelementu menu z odpowiednią metodą w obiekcie kontrolera skieruje kontroler do zbadania stosu obiektów, określenia, które obiekty są brudne , a następnie ponownego zapisania pliku dokumentu danych podstawowych z tymi zmianami.

Dane podstawowe są zorganizowane w dużą hierarchię klas, chociaż interakcja jest powszechna tylko w przypadku niewielkiego ich zestawu.

Nazwa Posługiwać się Kluczowe metody
NSManagedObject
  • Dostęp do atrybutów
  • „Wiersz” danych
  • -podmiot
  • -valueForKey:
  • -setValue:forKey:
Kontekst NSManagedObject
  • działania
  • Zmiany
  • -executeFetchRequest:błąd:
  • -zapisać
NSManagedObjectModel
  • Struktura
  • Składowanie
  • -podmioty
  • -fetchRequestTemplateForName:
  • -setFetchRequestTemplate:
 dlaNazwisko:
Żądanie NSFetch
  • Poproś o dane
  • -setEntity:
  • -setPredykat:
  • -setFetchBatchSize:
NSPersistentStoreCoordinator
  • Mediator
  • Utrzymywanie danych
  • -addPersistentStoreWithType:
 konfiguracja:URL:
 opcje:błąd:
  • -persistentStoreForURL:
NSPredicate
  • Określ zapytanie
  • +predicate WithFormat:
  • -oceniaj z obiektem:

Formaty przechowywania

Dane podstawowe mogą serializować obiekty w formacie XML, binarnym lub SQLite w celu przechowywania. Wraz z wydaniem systemu Mac OS X 10.5 Leopard programiści mogą również tworzyć własne, niestandardowe typy sklepów atomowych . Każda metoda ma swoje zalety i wady, takie jak czytelność dla człowieka (XML) lub bardziej wydajna pamięć (SQLite).

Ta część danych podstawowych jest podobna do oryginalnego systemu Enterprise Objects Framework (EOF), ponieważ można pisać dość wyrafinowane zapytania. W przeciwieństwie do EOF, nie jest możliwe napisanie własnego SQL, ponieważ bazowy magazyn może nie być oparty na SQL. W ostatnim czasie w ramach ODBC udostępniono magazyn danych Core dla ODBC .

Schematy danych podstawowych są ustandaryzowane. Jeśli masz plik modelu danych Xcode, możesz swobodnie odczytywać i zapisywać pliki w tym formacie. Jednak w przeciwieństwie do EOF, Core Data nie jest obecnie przeznaczony do dostępu dla wielu użytkowników lub jednoczesnego dostępu, chyba że używasz frameworka ODBC.

Migracja schematu jest również nietrywialna, prawie zawsze wymaga kodu. Jeśli inni deweloperzy mają dostęp do modelu danych i zależą od niego, może być konieczne dostarczenie kodu translacji wersji oprócz nowego modelu danych, jeśli zmieni się schemat.

Historia i geneza

Core Data w dużej mierze zawdzięcza swój projekt wcześniejszemu produktowi NeXT , Enterprise Objects Framework (EOF).

EOF było mapowaniem obiektowo-relacyjnym dla zaawansowanych aparatów baz danych SQL, takich jak Microsoft SQL Server i Oracle . Cel EOF był dwojaki: po pierwsze, połączyć się z silnikiem bazy danych i ukryć szczegóły implementacji; po drugie, aby odczytać dane z formatu relacyjnego i przetłumaczyć je na zestaw obiektów. Deweloperzy zazwyczaj wchodzili w interakcję tylko z obiektami, co upraszczało tworzenie złożonych programów, kosztem pewnej konfiguracji mapowania danych do obiektów. Model obiektowy EOF został celowo zaprojektowany, aby powstałe programy działały w sposób podobny do dokumentu; użytkownik mógł edytować dane lokalnie w pamięci, a następnie zapisać wszystkie zmiany za pomocą jednego polecenia Zapisz.

W całej swojej historii EOF zawierał pewną liczbę przydatnych bitów kodu, które w inny sposób nie były dostępne w NeXTSTEP / OpenStep . Na przykład EOF wymagał możliwości śledzenia, które obiekty były brudne, aby system mógł później je zapisać. Zostało to przedstawione programiście nie tylko jako system podobny do dokumentu, ale także w postaci nieograniczonego stosu poleceń Cofnij, przy czym każde polecenie zastosowane do danych było reprezentowane jako czynność, której nie można cofnąć. Wielu programistów skarżyło się, że ten kod zarządzania stanem jest zbyt przydatny, aby można go było wyizolować w EOF, a później został przeniesiony do interfejsu Cocoa API podczas przechodzenia do systemu Mac OS X .

Początkowo nie tłumaczono samego EOF. EOF był używany głównie wraz z innym produktem z ery OpenStep, WebObjects , który był serwerem aplikacji pierwotnie opartym na Objective-C . W tym czasie Apple był w trakcie przenoszenia WebObjects do języka programowania Java , a w ramach tej konwersji EOF stał się znacznie trudniejszy w użyciu z Cocoa. Po raz kolejny programiści zewnętrzni narzekali na wiele.

Jednym z krytycznych wniosków jest to, że system zarządzania stanem obiektów w EOF tak naprawdę nie miał nic wspólnego z relacyjnymi bazami danych. Ten sam kod mógł być i był używany przez programistów również do zarządzania wykresami innych obiektów. W tej roli naprawdę użytecznymi częściami EOF były te, które automatycznie budowały zestawy obiektów z surowych danych, a następnie je śledziły. To właśnie ta koncepcja stanowi podstawę danych podstawowych.

Uwagi

Bibliografia

Zewnętrzne linki