Krótka odpowiedź:
Nie, nie jest to konieczne.
Długa odpowiedź:
Objective-C jest dynamiczna wpisywanie, późne wiązanie język programowania. W krótkiej formie oznacza to, że każda decyzja dotycząca typu może zostać podjęta w czasie wykonywania, a nie w czasie kompilacji, a ponadto można uzyskać dostęp do właściwości wiadomości i wysyłać je do obiektu bez znajomości jego typu (klasy).
Ale nie jest konieczne dla struktury danych podstawowych, a Ty jako użytkownik danych podstawowych i model znać typ obiektu zarządzanego dla typu jednostki. Nie jest nawet konieczne posiadanie określonego typu dla typu jednostki. (Nie generuję klas bardzo często, a jeśli to robię, robię to ręcznie.) W związku z tym, w przeciwieństwie do innych języków programowania, te wygenerowane klasy nie są konieczne, aby nadać kompilatorowi typ.
Jednak kompilator chce co najmniej co najmniej jedną metodę zobaczyć sygnaturę (wpisywanie parametrów). W przeciwnym razie ostrzeże. Nawet to jest możliwe, że kod pracuje jak ten ...
NSManagedObject *person = …
NSString *firstName = [person firstName];
... dla typu podmiotu Person
z nieruchomości firstName
, kompilator będzie cię ostrzec, że nie wie nic o sposobie –firstName
znać.
Zamiast tego można wpisać coś takiego:
NSManagedObject *person = …
NSString *firstName = [person valueForKey:@"firstName"];
(Kompilator wie -valueForKey:
, ponieważ jest to metoda zadeklarowana w NSObject
.)
Oprócz tego można uzyskać korzyści, takich jak uzupełnianie kodu, należy sprawdzić błędy pisowni i tak dalej. Ale nie musisz używać narzędzia do generowania kodu w Xcode. Po prostu zadeklaruj taką klasę i we właściwościach interfejsu. Akcesory można generować dynamicznie za pomocą @dynamic
. (Osobiście prawie nigdy nie używam generowania statycznego kodu.)
Edytuj: Dodano wynik dyskusji w komentarzach.
A więc mając interfejs (".h-plik") kategorii, kompilator wie wystarczająco dużo, aby skompilować cały kod bez ostrzeżeń. Będzie działać w środowisku wykonawczym, jeśli jest gwarantowane - lub sprawdzane w czasie wykonywania - że można wysłać odpowiednią wiadomość. Ma to sens w wielu sytuacjach od samego początku Objective-C, i. mi. do przekazywania i nieformalnych protokołów. W kontekście danych podstawowych służy do dynamicznego generowania standardowych metod dostępu. Wszystko działa dobrze bez żadnej implementacji.
Jednak z pewnych powodów chce się wdrożyć, ja. mi. utrzymanie na zmianach wartości. W takim przypadku dobrze jest mieć implementację kodu pośredniczącego, którą można edytować. Ale dla standardowego zachowania nie jest to konieczne.
Oddzielne pliki są użyteczne, jeśli chcesz dodać dodatkowe właściwości/zmienne instancji do klasy, porównaj http://stackoverflow.com/questions/34063965/nsmanagedobject-subclass-property-in-category. –
Po to właśnie jest 'MyObject. *', Automatycznie wygenerowane 'MyObject + CoreDataProperties. *' Powinny pozostać nietknięte, aby można było je zregenerować, jeśli zmienisz model. – trapper