Solução para classes geradas automaticamente
do gerador de código do Xcode (ios 10 e superior)
Se você criar uma entidade chamada "YourClass", o Xcode escolherá automaticamente "Class Definition" como padrão um tipo de Codegen em "Data Model Inspector". isso irá gerar classes abaixo:
Versão Swift:
// YourClass+CoreDataClass.swift
@objc(YourClass)
public class YourClass: NSManagedObject {
}
Versão Objective-C:
// YourClass+CoreDataClass.h
@interface YourClass : NSManagedObject
@end
#import "YourClass+CoreDataProperties.h"
// YourClass+CoreDataClass.m
#import "YourClass+CoreDataClass.h"
@implementation YourClass
@end
Escolheremos "Categoria / Extensão" na opção Codegen em vez de "Definição de Classe" no Xcode.
Agora, se quisermos adicionar um enum, vá e crie outra extensão para sua classe gerada automaticamente e adicione suas definições de enum aqui como abaixo:
// 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
Agora, você pode criar acessores personalizados se quiser restringir os valores a um enum. Verifique a resposta aceita pelo proprietário da pergunta . Ou você pode converter seus enums enquanto os define com o método de conversão explicitamente usando o operador cast como abaixo:
model.yourEnumProperty = (int16_t)YourEnumTypeStarted;
Verifique também
Geração automática de subclasse Xcode
O Xcode agora oferece suporte à geração automática de subclasses NSManagedObject na ferramenta de modelagem. No inspetor de entidade:
Manual / Nenhum é o comportamento padrão e anterior; neste caso, você deve implementar sua própria subclasse ou usar NSManagedObject. Categoria / extensão gera uma extensão de classe em um arquivo chamado ClassName + CoreDataGeneratedProperties. Você precisa declarar / implementar a classe principal (se em Obj-C, por meio de um cabeçalho, a extensão pode importar chamada ClassName.h). A definição de classe gera arquivos de subclasse nomeados como ClassName + CoreDataClass, bem como os arquivos gerados para categoria / extensão. Os arquivos gerados são colocados em DerivedData e reconstruídos na primeira construção após o modelo ser salvo. Eles também são indexados pelo Xcode, portanto, clicar com o comando nas referências e abrir rapidamente por nome de arquivo funciona.
enum
s?