Solución para clases generadas automáticamente
del Generador de código de Xcode (ios 10 y superior)
Si crea una entidad llamada "YourClass", Xcode automáticamente elegirá "Definición de clase" como tipo de Codegen predeterminado en "Inspector de modelo de datos". esto generará clases a continuación:
Versión rápida:
// YourClass+CoreDataClass.swift
@objc(YourClass)
public class YourClass: NSManagedObject {
}
Versión Objective-C:
// YourClass+CoreDataClass.h
@interface YourClass : NSManagedObject
@end
#import "YourClass+CoreDataProperties.h"
// YourClass+CoreDataClass.m
#import "YourClass+CoreDataClass.h"
@implementation YourClass
@end
Elegiremos "Categoría / Extensión" de la opción Codegen en lugar de "Definición de clase" en Xcode.
Ahora, si queremos agregar una enumeración, cree otra extensión para su clase generada automáticamente y agregue sus definiciones de enumeración aquí como se muestra a continuación:
// 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
Ahora, puede crear descriptores de acceso personalizados si desea restringir los valores a una enumeración. Compruebe la respuesta aceptada por el propietario de la pregunta . O puede convertir sus enumeraciones mientras las configura con el método de conversión explícitamente utilizando el operador de conversión como se muestra a continuación:
model.yourEnumProperty = (int16_t)YourEnumTypeStarted;
También comprobar
Generación automática de subclase Xcode
Xcode ahora admite la generación automática de subclases NSManagedObject en la herramienta de modelado. En el inspector de entidades:
Manual / Ninguno es el comportamiento predeterminado y anterior; en este caso, debe implementar su propia subclase o usar NSManagedObject. Categoría / Extensión genera una extensión de clase en un archivo llamado ClassName + CoreDataGeneratedProperties. Debe declarar / implementar la clase principal (si está en Obj-C, a través de un encabezado, la extensión puede importar con el nombre ClassName.h). La definición de clase genera archivos de subclase denominados como ClassName + CoreDataClass, así como los archivos generados para Categoría / Extensión. Los archivos generados se colocan en DerivedData y se reconstruyen en la primera compilación después de guardar el modelo. También están indexados por Xcode, por lo que hacer clic en el comando y hacer clic en las referencias y la apertura rápida por nombre de archivo funciona.
enum
s?