0
votes

Ajout d'une méthode à un fichier généré par des données Xcode 10

Cette question a probablement une réponse ailleurs, mais je n'ai trouvé que des réponses aux versions obsolètes de Xcode ou de projets qui utilisent Swift.

J'utilise Xcode 10 et lisez Programmation iOS Le Big Nerd Ranch Guide, 4ème édition . J'utilise une telle version ancienne car c'est la ressource que mon travail m'a fourni.

Actuellement, j'essaie d'ajouter une méthode à une classe générée de Coredata pour l'objectif-c.

avec codeGen défini sur Catégorie / extension avec mon entité sélectionnée dans CoreData Les fichiers de classe générés sont:

  • BNRITEM + COREDATAPROPERTIES.H / M
  • BNRITEM + COREDATACLASS.H / M

    BNRITEM + COREDATACLASS.H Comprend BNRITEM + COREDATAPROPERTIES.H et BNRITEM + COREDATAPROPERTIES.H Comprend BNRITEM.H < / code> (qui n'existe pas). Je suppose que j'ai besoin de créer bnritem.h mais je ne sais pas quel fichier à importer dans bnritem.h depuis le bnritem + coredataproperties.h ou BNRITEM + COREDATACLASS.H semble créer une circulaire inclure le cycle.

    Dans quel fichier dois-je ajouter une méthode d'instance à une classe générée de CoreData pour l'objectif-c dans xcode 10?


0 commentaires

5 Réponses :


0
votes

L'instruction #import a été introduite pour résoudre les dépendances cycliques créées par #include . Donc, cela n'a pas beaucoup d'importance si vous utilisez #import , mais si vous êtes toujours préoccupé, vous pouvez également utiliser @class déclaration avant


0 commentaires

0
votes

La convention consiste à utiliser @class dans le fichier .h et #import dans le .m Fichier, sauf lorsque #import est nécessaire dans le fichier .h . Ce dernier se produit lors de la référence à une superclasse ou à un protocole.

L'idée est d'accélérer les recompiles. Si classa.h importe classb.m , et que vous modifiez uniquement classb.m pendant le développement, puis parce que classa.m importateurs classa.h quels importations classb.m , classa.m devra être recompilé pendant la prochaine construction, même s'il est inchangé.

Bien sûr, tout cela s'en va à Swift :)


0 commentaires

0
votes

Ce n'est probablement pas la réponse réelle, mais j'ai réparé cela en modifiant le codeGen sur manuel / né et en modifiant les fichiers qu'il a générés.


0 commentaires

0
votes

Qu'en est-il de la sortie de l'option de génération de code à la définition de la classe et de créer une extension (une catégorie dans l'objectif-c) de votre entité?


0 commentaires

0
votes

Cela a toujours été ma lutte, mais je n'ai plus que je courais dans Cet article Apple .

La deuxième façon est la façon dont vous essayez d'utiliser. L'étape inattendue consiste à déplacer le fichier de propriétés sur la corbeille. Et en réalité, il semble que les fichiers + coredataclass doivent être renommés à juste .h et .m . Après cela, vous pouvez utiliser ces fichiers pour étendre votre classe et que les fichiers de propriété sont générés.

Les étapes pour créer votre classe d'objet gérée sont les suivantes:

  • Choisissez la catégorie / extension dans l'inspecteur des modèles de données pour votre entité.
  • Générez votre classe avec l'éditeur Editeur> Créer NSManagedObject Sous-classe ... MENU.
  • Déplacez le + COREDATAPROPERTES.H et .M Fichiers.
  • Étape supplémentaire: renommez les fichiers de la classe de données comme il vient de décrire.

0 commentaires