Soluzione per classi generate automaticamente
dal generatore di codice di Xcode (ios 10 e versioni successive)
Se crei un'entità chiamata "YourClass", Xcode sceglierà automaticamente "Class Definition" come tipo di Codegen predefinito in "Data Model Inspector". questo genererà le classi seguenti:
Versione rapida:
// YourClass+CoreDataClass.swift
@objc(YourClass)
public class YourClass: NSManagedObject {
}
Versione Objective-C:
// YourClass+CoreDataClass.h
@interface YourClass : NSManagedObject
@end
#import "YourClass+CoreDataProperties.h"
// YourClass+CoreDataClass.m
#import "YourClass+CoreDataClass.h"
@implementation YourClass
@end
Sceglieremo "Categoria / Estensione" dall'opzione Codegen invece di "Definizione classe" in Xcode.
Ora, se vogliamo aggiungere un'enumerazione, crea un'altra estensione per la tua classe generata automaticamente e aggiungi le definizioni dell'enumerazione qui come di seguito:
// 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
Ora puoi creare funzioni di accesso personalizzate se desideri limitare i valori a un'enumerazione. Si prega di controllare la risposta accettata dal proprietario della domanda . Oppure puoi convertire le tue enumerazioni mentre le imposti con un metodo di conversione esplicito utilizzando l'operatore cast come di seguito:
model.yourEnumProperty = (int16_t)YourEnumTypeStarted;
Controlla anche
Generazione automatica di sottoclassi Xcode
Xcode ora supporta la generazione automatica di sottoclassi NSManagedObject nello strumento di modellazione. Nella finestra di ispezione entità:
Manuale / Nessuno è il comportamento predefinito e precedente; in questo caso, è necessario implementare la propria sottoclasse o utilizzare NSManagedObject. Category / Extension genera un'estensione di classe in un file denominato come ClassName + CoreDataGeneratedProperties. È necessario dichiarare / implementare la classe principale (se in Obj-C, tramite un'intestazione l'estensione può importare denominata ClassName.h). La definizione della classe genera file di sottoclassi denominati come ClassName + CoreDataClass, nonché i file generati per Categoria / Estensione. I file generati vengono inseriti in DerivedData e ricostruiti nella prima build dopo il salvataggio del modello. Sono anche indicizzati da Xcode, quindi il clic del comando sui riferimenti e l'apertura rapida per nome del file funziona.
enum
s?