Lösung für automatisch generierte Klassen
vom Code-Generator von Xcode (ios 10 und höher)
Wenn Sie eine Entität mit dem Namen "YourClass" erstellen, wählt Xcode automatisch "Klassendefinition" als Standard-Codegen-Typ bei "Data Model Inspector". Dadurch werden die folgenden Klassen generiert:
Schnelle Version:
// YourClass+CoreDataClass.swift
@objc(YourClass)
public class YourClass: NSManagedObject {
}
Objective-C-Version:
// YourClass+CoreDataClass.h
@interface YourClass : NSManagedObject
@end
#import "YourClass+CoreDataProperties.h"
// YourClass+CoreDataClass.m
#import "YourClass+CoreDataClass.h"
@implementation YourClass
@end
Wir wählen "Kategorie / Erweiterung" aus der Codegen-Option anstelle von "Klassendefinition" in Xcode.
Wenn wir nun eine Aufzählung hinzufügen möchten, erstellen Sie eine weitere Erweiterung für Ihre automatisch generierte Klasse und fügen Sie Ihre Aufzählungsdefinitionen hier wie folgt hinzu:
// YourClass+Extension.h
#import "YourClass+CoreDataClass.h" // That was the trick for me!
@interface YourClass (Extension)
@end
// YourClass+Extension.m
#import "YourClass+Extension.h"
@implementation YourClass (Extension)
typedef NS_ENUM(int16_t, YourEnumType) {
YourEnumTypeStarted,
YourEnumTypeDone,
YourEnumTypePaused,
YourEnumTypeInternetConnectionError,
YourEnumTypeFailed
};
@end
Jetzt können Sie benutzerdefinierte Accessoren erstellen, wenn Sie die Werte auf eine Aufzählung beschränken möchten. Bitte überprüfen Sie die akzeptierte Antwort des Frageninhabers . Oder Sie können Ihre Aufzählungen konvertieren, während Sie sie mit der expliziten Konvertierungsmethode mithilfe des folgenden Darstellungsoperators festlegen:
model.yourEnumProperty = (int16_t)YourEnumTypeStarted;
Überprüfen Sie auch
Xcode automatische Unterklassengenerierung
Xcode unterstützt jetzt die automatische Generierung von NSManagedObject-Unterklassen im Modellierungswerkzeug. Im Entitätsinspektor:
Manuell / Keine ist die Standardeinstellung und das vorherige Verhalten. In diesem Fall sollten Sie Ihre eigene Unterklasse implementieren oder NSManagedObject verwenden. Kategorie / Erweiterung generiert eine Klassenerweiterung in einer Datei mit dem Namen ClassName + CoreDataGeneratedProperties. Sie müssen die Hauptklasse deklarieren / implementieren (wenn in Obj-C die Erweiterung über einen Header den Namen ClassName.h importieren kann). Die Klassendefinition generiert Unterklassendateien mit dem Namen ClassName + CoreDataClass sowie die für Category / Extension generierten Dateien. Die generierten Dateien werden in DerivedData abgelegt und beim ersten Build nach dem Speichern des Modells neu erstellt. Sie werden auch durch Xcode indiziert, sodass das Klicken mit der Befehlsnummer auf Referenzen und das schnelle Öffnen nach Dateiname funktioniert.
enum
s?