Co to jest format pliku MOM?
Plik .mom to skompilowany model Core Data utworzony przez Xcode w czasie budowania projektu. Gdy programista projektuje schemat danych w edytorze źródłowym .xcdatamodeld, Xcode kompiluje ten projekt do binarnego pliku .mom (Managed Object Model), który jest dołączany do pakietu aplikacji i ładowany w czasie wykonywania przez NSManagedObjectModel.
Strukturalnie plik .mom jest binarną listą właściwości Apple (property list) zaczynającą się od magicznych bajtów bplist00, kodującą encje, atrybuty, relacje, szablony żądań pobierania (fetch requests) oraz konfiguracje modelu, które definiują schemat Core Data aplikacji. Opisuje on strukturę bazy danych - a nie same dane.
W przypadku schematów wersjonowanych Xcode buduje pakiet .momd - katalog zawierający jeden plik .mom dla każdej wersji schematu oraz plik VersionInfo.plist, który rejestruje skróty (hashes) wersji dla poszczególnych encji. Core Data porównuje te skróty przy uruchomieniu, aby zdecydować, czy możliwa jest lekka migracja (lightweight migration), czy wymagany jest model mapowania dla ciężkiej migracji.
Programiści nigdy nie edytują pliku .mom bezpośrednio; plik źródłowy .xcdatamodeld jest artefaktem, na którym należy pracować. Plik .mom jest wyłącznie produktem kompilacji - ręczna modyfikacja mogłaby uszkodzić model. Platformy Apple korzystające z Core Data to macOS, iOS, iPadOS, tvOS oraz watchOS.
Nowsza opcja, SwiftData (wprowadzona w 2023 roku), bazuje wewnętrznie na Core Data, ale udostępnia API oparte na makrach języka Swift, które całkowicie ukrywa pliki .mom przed programistą. W przypadku aplikacji skierowanych na starsze wersje systemów operacyjnych, potok .xcdatamodeld → .mom pozostaje aktualny.
Bezpieczeństwo
RYZYKO: LOWPlik .mom jest pasywnym artefaktem kompilacji (listą właściwości z definicjami schematu) i nie jest wykonywalny, więc stwarza niewielkie ryzyko. Ujawnia schemat danych aplikacji, ale nie dane użytkownika. Jedyną przestrogą jest standardowa procedura dla nieznanych plików: sprawdzaj je za pomocą plutil zamiast uruchamiać cokolwiek. Unikaj stron oferujących „MOM file opener” - odpowiednie narzędzia (Xcode, plutil) są dostępne bezpłatnie od Apple.
Szczegóły formatu
w pigułceProgramy otwierające pliki MOM
plutil -p file.mom w Terminalu lub dowolną przeglądarką bplist), aby sprawdzić jego zserializowaną zawartość. plutil -p path/to/Model.mom, aby wyświetlić skompilowany model jako czytelny tekst. Szczegóły techniczne
specyfikacja| Typ pliku | Skompilowana binarna lista właściwości Apple (bplist) |
| Magiczne bajty | bplist00 (62 70 6C 69 73 74 30 30) pod offsetem 0 |
| Deweloper | Apple Inc. |
| Kodowanie | Binarne (serializacja Apple bplist) |
| Typowy rozmiar pliku | Od kilku KB do kilkuset KB (opis schematu, a nie dane aplikacji) |
| Zawartość | Zserializowany NSManagedObjectModel - encje, atrybuty, relacje, szablony żądań pobierania i konfiguracje |
| Artefakt kompilacji | Kompilowany przez Xcode ze źródła .xcdatamodeld; nieprzeznaczony do ręcznej edycji |
| Pakiet wersjonowany | Katalog .momd zawierający jeden plik .mom na wersję schematu oraz VersionInfo.plist ze skrótami wersji encji |
| Zoptymalizowany wariant | .omo (optimized managed object model) - generowany przez Xcode dla szybszego ładowania w czasie wykonywania |
| Wsparcie migracji | Skróty wersji poszczególnych encji w VersionInfo.plist sterują lekką i ciężką migracją Core Data |
| Ładowanie w czasie wykonywania | Ładowany przez API NSManagedObjectModel; napędza NSPersistentStoreCoordinator i NSManagedObjectContext |
| Powiązane platformy | macOS, iOS, iPadOS, tvOS, watchOS |
| Nowoczesna alternatywa | SwiftData (2023) bazuje na Core Data, ale ukrywa pliki .mom za API opartym na makrach Swift |
| Wydano | Core Data, introduced with Mac OS X 10.4 Tiger (2005); built on the earlier Enterprise Objects Framework |
| Najnowsza wersja | Tracks the current Xcode / Core Data tooling (versioned models compile to .momd directories) |
| Specyfikacja | developer.apple.com |
Konwersje MOM
Pytania i odpowiedzi społeczności
pytania użytkownikówBrak pytań - bądź pierwszą osobą, która zapyta o pliki MOM.
Najczęściej zadawane pytania
Co to jest plik .mom na moim komputerze Mac?
Jak otworzyć plik .mom?
plutil -p file.mom w Terminalu.