Comment créer une catégorie dans Xcode 6 ou supérieur?

318

Je veux créer une catégorie UIColordans mon application à l'aide de Xcode 6. Mais le fait est que dans Xcode 6, il n'y a pas de modèle de fichier de catégorie Objective-C.

Existe-t-il une option pour créer une catégorie dans Xcode 6?

Yalamandarao
la source
comment faisiez-vous avant Xcode 6?
holex
Il suffit de le taper dans un fichier source: @interface UIColor(MyCategory) ... etc
JeremyP
8
Pourquoi ne pas sélectionner une réponse ?? Ne pas le faire fait perdre du temps aux autres utilisateurs à la recherche de la solution.
Tommie C.
Si vous utilisez Swift, vous devez créer une extension plutôt qu'une catégorie. Voir cette réponse pour savoir comment le faire.
Suragch

Réponses:

745

Ils n'ont pas oublié. Ils l'ont juste déplacé sans en parler à personne.

  1. Cliquez sur File-> New->File

  2. Sélectionnez Objective-C filesous Sourcesdans iOSou Mac OSrespectivement et cliquez sur Suivant

  3. Maintenant sous File Type:choisir Category, ProtocolouExtension

PS. Sous File Name:tout ce que vous tapez ici sera soit la Category, Protocolou ExtensionNom.

unom
la source
13
C'est tellement déroutant.
Ben Sinclair
6
Ils se sont contentés d'ajouter Swift et ont tout caché sous Objective-C ou je pense qu'ils l'ont fait. Personnellement, je ne comprends pas pourquoi Swift a été ajouté, Objective-C est un langage si beau et expressif une fois que vous le connaissez ... Ce sont des objets au-dessus de C ... Perrrfect
unom
8
Hé, la description donnée Objective-C Filepar XCode 6 est "Un fichier Objective-C vide.", Plutôt que ma description qui serait, "l'un des anciens fichiers Objective-C, pas du tout vides, auxquels vous êtes habitué" , ce qui m'a jeté assez bien!
Benjohn
@unmircea Merci d'avoir publié de telles informations utiles. Pour Apple: c'est stupide!
mbm29414
1
Ils n'ont pas oublié. Ils l'ont juste déplacé sans en parler à personne. ce qui est typique, compte tenu du niveau merdique des documentations Apple en général et le plus souvent du manque total de documentation.
Duck
77

Pour créer CategoryBaseClass + CategoryName.m / .h :

  1. Fichier → Nouveau → Fichier ... ou utilisez ⌘N .
  2. Sélectionnez Fichier Objective-C .

entrez la description de l'image ici

  1. Tapez le nom de la catégorie, sélectionnez Type de fichier: catégorie , puis sélectionnez la classe de base.

entrez la description de l'image ici

  1. Complétez le flux pour créer la catégorie.
Zorayr
la source
37

Voici une démonstration visuelle:

création d'un fichier de catégorie

rob mayoff
la source
19

Mise à jour Xcode6-Beta5

L'interface a maintenant changé et il est possible d'ajouter une catégorie directement à partir de la fenêtre Nouveau> Fichier.

Voir la réponse d'Unmircea .


J'ai été moi-même surpris, et je suppose qu'à cause de Swift, ils ont oublié le bon vieux Objective-C.

Vous avez deux options:

  1. Créez une classe Objective-C avec le nom de la catégorie, par exemple UIView+Powerups, puis modifiez manuellement l'interface pour qu'elle corresponde à celle de la catégorie. Notez que l'extrait pour l'interface de catégorie et l'implémentation fonctionne toujours, donc c'est très simple: tapez @interface-categoryet @implementation-category.

  2. Importez-le depuis Xcode 5! Utilisez cette commande:

    cp -r /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/File\ Templates/Cocoa\ Touch/Objective-C\ category.xctemplate /Applications/Xcode6-Beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/File\ Templates/Source/

    Fermez et rouvrez Xcode 6 et vous trouverez «Catégorie Objective-C» dans l'assistant pour le nouveau fichier.

mokagio
la source
2
FYI: si vous êtes sur une version bêta ultérieure, changez simplement Xcode-beta.app dans la ligne en Xcode6-betaX.app où X est le numéro bêta.
Alex l'Ukrainien
1
Faux! Découvrez la réponse de unmircea ci-dessous pour la bonne réponse - elle n'est pas partie, elle vient de bouger ..
Jay
12

Il n'y a pas de modèle prédéfini pour créer une catégorie dans Xcode 6 beta (pour le moment), ils peuvent ajouter cette option plus tard. En guise de Cocoa Touch Classsolution, vous pouvez créer un (ce n'est pas correct, je sais, mais pas d'autre moyen) nommé UIImage+Additions(ClassName + CategoryName) et remplacer son interface et sa mise en œuvre quelque chose comme

UIImage + Additions.h

#import <UIKit/UIKit.h>

@interface UIImage(Additions)

+(void)testMethod;

@end 

UIImage + Additions.m

#import "UIImage+Additions.h"

@implementation UIImage (Additions)

+(void)testMethod
{

}

@end

Modifier
Cette réponse a été écrite avant de trouver un moyen de créer une catégorie dans la version bêta de Xcode 6. Vérifiez la réponse d'unmircea pour la bonne façon de créer une catégorie

Anil Varghese
la source
Apple a oublié d'ajouter la catégorie Objective-c, l'extension de classe Objective-c, les modèles de protocoles Objective-c ....
Yalamandarao
J'ai créé un rapport de bogue # 17627118 si vous souhaitez le dupliquer.
David Pettigrew
Plus besoin de solution de contournement maintenant puisque la version finale de XCode 6 a un support de catégorie intégré.
Zorayr
@Zorayr Il a été répondu avant la version finale de Xcode 6 et le travail n'est pas faux également. Ne vous contentez pas de voter contre.
Anil Varghese
6

En étendant la réponse fantastique d'Unmircea : comment créer une catégorie personnalisée pour implémenter une UIColorpalette personnalisée , vous pouvez créer une catégorie.

Une fois que vous avez créé votre catégorie (dans cet exemple, c'est une catégorie appelée ColorPalettede classe UIColor ), vous aurez un en-tête et un fichier d'implémentation.

UIColor + ColorPalette.h

#import <UIKit/UIKit.h>

@interface UIColor (ColorPalette)

// Your custom colors

+ (UIColor *) customRedButtonColor;
+ (UIColor *) customGreenButtonColor;

@end

UIColor + ColorPalette.m

#import "UIColor+ColorPalette.h"

@implementation UIColor (ColorPalette)

// Button Colors

+ (UIColor *) customRedButtonColor {
    return [UIColor colorWithRed:178.0/255.0 green:25.0/255.0 blue:0.0/255.0 alpha:1.0];
}

+ (UIColor *) customGreenButtonColor {
    return [UIColor colorWithRed:20.0/255.0 green:158.0/255.0 blue:96.0/255.0 alpha:1.0];
}

Pour utiliser votre palette de couleurs personnalisée, importez simplement l'en-tête dans la classe où vous souhaitez implémenter vos couleurs personnalisées:

#import "UIColor+ColorPalette.h"

et appeler la couleur comme vous le feriez une couleur standard comme redColor, greenColorou blueColor.

Voici un lien vers une discussion un peu plus approfondie sur la création d'une palette personnalisée.

De plus, voici un outil pour vous aider à sélectionner les valeurs de couleur personnalisées

Adrian
la source
1
Bien que cela puisse théoriquement répondre à la question, il serait préférable d'inclure ici les parties essentielles de la réponse et de fournir le lien de référence.
Jasper
3

Vous pouvez simplement copier les modèles que vous voulez d'une ancienne version de Xcode, j'ai fait un script shell pour cela: https://github.com/cDigger/AddMissingTemplates

NSFish
la source
Bien que cela puisse être une solution de travail, c'est probablement une meilleure idée d'utiliser le support de catégorie intégré à Xcode - de cette façon, les modèles seront toujours à jour.
Zorayr
1

Vous pouvez créer un fichier "d'extension" comme NSString + Helper:

1: File  New  File... or use N.

2: Name NSString+Helper (For example)

3: create the file

4: Remove the code from file

5: add 

extension NSString {


}

Terminé. profiter du codage

Rohit Sisodia
la source