Comment créer des templates de projet dans Xcode 4

Il est vraiment difficile de find un tutoriel pour le faire car la plupart des informations se rapportent à Xcode 3. Réponse ci-dessous peut aider certaines personnes.

J'ai trouvé la plupart de mes informations pour la réponse ci-dessous sur les sites suivants:

  • http://meandmark.com/blog/2011/12/creating-custom-xcode-4-project-templates/
  • http://www.bobmccune.com/2012/03/04/creating-custom-xcode-4-file-templates/

J'ai passé des heures à chercher sur le web pour find des informations à ce sujet. Ce n'est pas vraiment difficile de mettre en place des templates de projet pour Xcode4.5 mais il est difficile de find des informations sur le web qui les rassemble tous! J'espère que les étapes ci-dessous vous aideront à créer votre propre.

Mise en place

  1. Commençons par get une copy d'un model de projet Xcode existant à utiliser comme base. Ouvrez finder, allez dans Applications et faites un clic droit sur Xcode pour afficher le contenu du package. Accédez à Sommaire / Développeur / Plateforms / iPhoneOS.platform / Developer / Bibliothèque / Xcode / Modèles / Modèles de projet / Application /

[EDIT] Dans Xcode 5, le PATH est le suivant: ~ / Library / Developer / Xcode / Templates / Application / Project Templates. Si Modèles / Application / Modèles de projet n'existe pas, vous devez également le créer. Crédit à seufagner dans les commentaires ci-dessous pour la mise à jour bien que je ne l'ai pas essayé moi-même. [/MODIFIER]

  1. Copiez (ne pas couper / coller!) L'un des templates listés.
  2. Ouvrez une autre window finder et naviguez vers le directory suivant (pour afficher votre directory Library tapez ce cmd dans le terminal: chflags nohidden ~ / Library / ou select pressez la touche alt / option en cliquant sur Finder / Go) / Library / Developer / Xcode / Modèles (vous devrez peut-être créer ce dossier s'il n'est pas déjà présent) / Modèles de projet /
  3. Créez un dossier ici. Appelez-le comme vous le souhaitez, une suggestion est le nom de votre entreprise. Ce nom apparaît dans le menu de gauche du nouveau dialog de projet dans Xcode. Par exemple dans l'image ci-jointe que j'ai appelé le mien Appscore, il y en a un autre pour cocoas2d. entrez la description de l'image ici
  4. Collez le model de projet ici et changez son nom de dossier en celui que vous souhaitez, par exemple MySuperProjectTemplate.xctemplate. Nous n'avons pas encore terminé, car nous devons changer l'identifiant du template. Sinon, il n'apparaîtra pas dans la window de dialog du nouveau projet Xcode.
  5. Ouvrez le file TemplateInfo.plist dans TextEdit. Recherchez la key Identifiant. Vous devriez voir une valeur de string quelque chose de similaire à "com.apple.dt.unit.XXXXXX". Remplacez ceci par ce que vous voulez, tant que c'est unique. Je suggère à nouveau d'append le nom de votre entreprise et un nom qui décrit le model.
  6. Si vous ouvrez maintenant Xcode, vous devriez voir apparaître le model de projet sous le nom de votre entreprise dans le nouveau dialog de projet.

Personnalisation

Pour l'instant, vous avez une copy d'un model de projet existant qui n'est pas très utile. Je suppose que vous avez un certain nombre de classs qui sont réutilisées dans presque tous vos projets? Que diriez-vous de les inclure dans ce model?

  1. Copiez les files que vous souhaitez et collez-les dans votre nouveau model de projet, c'est-à-dire naviguez vers / Bibliothèque / Developer / Xcode / Templates / Modèles de projet // MySuperProjectTemplate.xctemplate /
  2. Ouvrez à nouveau le file TemplateInfo.plist dans TextEdit. La première chose que nous devons faire est de dire au model de projet d'inclure les nouveaux files afin de searchr une key appelée "Nodes" qui a un tableau de valeurs. Ajoutez les deux lignes suivantes:

    <ssortingng> _VARIABLE_classPrefix: identifiant_ .h </ ssortingng> <string> _VARIABLE_classPrefix: identifiant_ .m </ ssortingng>

Par exemple, si votre controller s'appelait BaseViewController, les lignes ressembleraient à ceci:

<ssortingng> ___ VARIABLE_classPrefix: identifiant ___ BaseViewController.h </ ssortingng> <string> ___ VARIABLE_classPrefix: identifiant ___ BaseViewController.m </ ssortingng>

Étape 2

  1. Ensuite, trouvez la key Définitions et vous devriez voir un dictionary comme sa valeur. Ici, nous devons append une reference aux files inclus. Créez une nouvelle key et appelez-la ___ VARIABLE_classPrefix: identifiant ___ BaseViewController.h (en prenant à nouveau le BaseViewController comme exemple).

Étape 3

  1. La valeur de cette key est encore un dictionary. Il contient une key appelée Path et une valeur de string qui est le nom du file, par exemple BaseViewController.h
  2. J'ai joint les images suivantes pour montrer ce que je veux dire car je pense que ma description est en deçà. Vous remarquerez peut-être qu'il y a une key appelée "Groupe", comme vous pouvez le deviner, vous pouvez créer directement des groupes et des files d'input: D

J'espère que cela est utile à quelqu'un 🙂 Toutes les questions commentaire ci-dessous et je fais de mon mieux pour y répondre. Je l'ai fait il y a quelques semaines donc ma memory est un peu floue.

Vous pouvez également apprendre beaucoup en inspectant les templates de projet existants, que vous pouvez find dans:

/Xcode.app/Contents/Developer/Library/Xcode/Templates/Project Templates/ 

pour Mac et

 /Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/Project Templates/ 

pour iOS .

Il y a aussi quelques exemples de templates sur GitHub par Reid Main et un autre par Acani . Il existe également des templates AFNetworking , créés par Mattt Thompson . Voir tous les exemples, y compris ceux construits par Apple, puis vous pouvez commencer à créer votre propre.

Un bon aperçu de toutes les variables utilisées dans le file plist peut être trouvé ici: https://gist.github.com/shazron/943736

@bennythemink Votre réponse est vraiment beaucoup d'aide, mais je veux append plus de choses dans votre réponse. Lorsque nous copions le model prédéfini xcode que cette key contient

 <key>Ancestors</key> <array> <ssortingng>com.apple.dt.unit.storyboardApplication</ssortingng> </array> 

cette valeur. Lorsque nous utilisons cette valeur de key dans le model personnalisé de xcode, elle crée la class AppDelegate par défaut. Ce que nous ne pouvons pas déplacer vers le dossier seulement, nous pouvons le déplacer en groupe. Donc, je suggère d'append ceci:

 <key>Ancestors</key> <array> <ssortingng>com.apple.dt.unit.objectiveCApplication</ssortingng> <ssortingng>com.apple.dt.unit.iPhoneBase</ssortingng> <ssortingng>com.apple.dt.unit.prefixable</ssortingng> </array> 

valeur dans le model personnalisé afin que nous ayons un model entièrement vide dans lequel nous pouvons faire des choses personnalisées.