Solution pour les classes générées automatiquement
à partir du générateur de code de Xcode (ios 10 et supérieur)
Si vous créez une entité nommée "YourClass", Xcode choisira automatiquement "Définition de classe" comme type de Codegen par défaut dans "Data Model Inspector". cela générera des classes ci-dessous:
Version Swift:
// YourClass+CoreDataClass.swift
@objc(YourClass)
public class YourClass: NSManagedObject {
}
Version Objective-C:
// YourClass+CoreDataClass.h
@interface YourClass : NSManagedObject
@end
#import "YourClass+CoreDataProperties.h"
// YourClass+CoreDataClass.m
#import "YourClass+CoreDataClass.h"
@implementation YourClass
@end
Nous choisirons "Catégorie / Extension" dans l'option Codegen au lieu de "Définition de classe" dans Xcode.
Maintenant, si nous voulons ajouter une énumération, allez créer une autre extension pour votre classe générée automatiquement et ajoutez vos définitions d'énumération ici comme ci-dessous:
// 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
Désormais, vous pouvez créer des accesseurs personnalisés si vous souhaitez limiter les valeurs à une énumération. Veuillez vérifier la réponse acceptée par le propriétaire de la question . Ou vous pouvez convertir vos énumérations pendant que vous les définissez avec une méthode de conversion explicite en utilisant l'opérateur de cast comme ci-dessous:
model.yourEnumProperty = (int16_t)YourEnumTypeStarted;
Vérifiez également
Génération automatique de sous-classes Xcode
Xcode prend désormais en charge la génération automatique de sous-classes NSManagedObject dans l'outil de modélisation. Dans l'inspecteur d'entités:
Manuel / Aucun est le comportement par défaut et précédent; dans ce cas, vous devez implémenter votre propre sous-classe ou utiliser NSManagedObject. Category / Extension génère une extension de classe dans un fichier nommé comme ClassName + CoreDataGeneratedProperties. Vous devez déclarer / implémenter la classe principale (si dans Obj-C, via un en-tête l'extension peut importer nommée ClassName.h). La définition de classe génère des fichiers de sous-classe nommés comme ClassName + CoreDataClass ainsi que les fichiers générés pour Category / Extension. Les fichiers générés sont placés dans DerivedData et reconstruits lors de la première construction après l'enregistrement du modèle. Ils sont également indexés par Xcode, donc un clic sur les références et une ouverture rapide par nom de fichier fonctionnent.
enum
s?