Come faccio a creare una categoria in Xcode 6 o versione successiva?


318

Voglio creare una categoria UIColornella mia app usando Xcode 6. Ma il fatto è che in Xcode 6 non esiste un modello di file di categoria Objective-C.

C'è qualche opzione per creare una categoria in Xcode 6?


come hai fatto prima di Xcode 6?
Holex,

@interface UIColor(MyCategory) ...
Digitalo

8
Perché non selezionare una risposta ?? Non farlo spreca tempo per gli altri utenti che cercano la soluzione.
Tommie C.,

Se si utilizza Swift, è necessario creare un'estensione anziché una categoria. Vedi questa risposta per come farlo.
Suragch,

Risposte:


745

Non hanno dimenticato. L'hanno appena spostato senza dirlo a nessuno.

  1. Fare clic su File-> New->File

  2. Selezionare Objective-C filesotto Sourcesin iOSo Mac OS, rispettivamente, e fare clic su Avanti

  3. Ora sotto File Type:scegliere Category, ProtocoloExtension

PS. Sotto File Name:qualunque cosa digiti qui sarà o il Category, Protocolo Extensionnome.


13
Questo è così confuso.
Ben Sinclair,

6
Si sono appena accomodati ad aggiungere Swift e hanno nascosto tutto sotto Objective-C o penso che lo abbiano fatto. Personalmente non capisco perché Swift è stato aggiunto, Objective-C è un linguaggio così bello ed espressivo una volta che lo conosci ... È Oggetti in cima a C ... Perrrfect
unom

8
Heh, la descrizione fornita Objective-C Fileda XCode 6 è "Un file Objective-C vuoto.", Piuttosto che la mia descrizione che sarebbe, "uno dei vecchi, per nulla vuoti, file Objective-C a cui sei abituato" , che mi ha gettato abbastanza bene!
Benjohn,

@unmircea Grazie per aver pubblicato informazioni così utili. Per Apple: questo è stupido!
mbm29414,

1
Non hanno dimenticato. L'hanno appena spostato senza dirlo a nessuno. ciò che è tipico, considerando il livello scadente delle documentazioni di Apple in generale e più frequentemente la totale mancanza di documentazione.
Duck

77

Per creare CategoryBaseClass + CategoryName.m / .h :

  1. File → Nuovo → File ... o usa ⌘N .
  2. Seleziona il file Objective-C .

inserisci qui la descrizione dell'immagine

  1. Digitare il nome della categoria, selezionare Tipo file: Categoria , quindi selezionare la classe base.

inserisci qui la descrizione dell'immagine

  1. Completa il flusso per creare la categoria.


19

Aggiornamento Xcode6-Beta5

L'interfaccia è ora cambiata ed è possibile aggiungere una categoria direttamente dalla finestra Nuovo> File.

Vedi la risposta di Unmircea .


Sono stato sorpreso da solo, e credo che a causa di Swift si siano dimenticati del buon vecchio Objective-C.

Hai due opzioni:

  1. Creare una classe Objective-C con il nome della categoria, ad esempio UIView+Powerups, quindi modificare manualmente l'interfaccia in modo che corrisponda a quella della categoria. Tieni presente che lo snippet per l'interfaccia della categoria e l'implementazione funziona ancora, quindi è molto semplice: digita @interface-categorye @implementation-category.

  2. Importalo da Xcode 5! Usa questo comando:

    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/

    Chiudi e riapri Xcode 6 e troverai "Categoria Obiettivo-C" nella procedura guidata per il nuovo file.


2
Cordiali saluti: se sei su una beta successiva, basta cambiare Xcode-beta.app nella riga in Xcode6-betaX.app dove X è il numero beta.
Alex l'ucraino,

1
Sbagliato! Controlla la risposta di unmircea qui sotto per la risposta corretta - non è andata, si è appena spostata ..
Jay

12

Non esiste un modello predefinito per creare la categoria in Xcode 6 beta (per il momento), potrebbero aggiungere questa opzione in un secondo momento. Come soluzione puoi creare un Cocoa Touch Class(non è corretto, lo so, ma nessun altro modo) chiamato UIImage+Additions(ClassName + CategoryName) e sovrascrivere la sua interfaccia e l'implementazione in qualche modo

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

Modifica
Questa risposta è stata scritta prima di trovare un modo per creare una categoria in Xcode 6 beta. Controlla la risposta di unmircea per il modo giusto di creare una categoria


Apple ha dimenticato di aggiungere la categoria Objective-c, l'estensione della classe Objective-c, i modelli dei protocolli Objective-c ....
Yalamandarao

Ho creato un rapporto bug # 17627118 se si desidera duplicarlo.
David Pettigrew

Non è necessario per risolvere il problema ora poiché la versione finale di XCode 6 ha il supporto di categoria integrato.
Zorayr,

@Zorayr È stato risposto prima della versione finale di Xcode 6 e anche il problema non è sbagliato. Non semplicemente votare verso il basso.
Anil Varghese il

6

Estendere la fantastica risposta di unmircea riguardo a : come creare una categoria personalizzata per implementare una UIColorpalette personalizzata , è possibile creare una categoria.

Dopo aver creato la tua categoria (in questo esempio, è una categoria chiamata ColorPalettedi classe UIColor ), avrai un'intestazione e un file di implementazione.

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];
}

Per utilizzare la tavolozza dei colori personalizzata, importa semplicemente l'intestazione nella classe in cui desideri implementare i colori personalizzati:

#import "UIColor+ColorPalette.h"

e chiama il colore come faresti per un colore standard redColor , greenColoroblueColor .

Ecco un link a una discussione leggermente più approfondita creazione di una palette personalizzata.

Inoltre, ecco uno strumento che ti aiuta a selezionare i valori di colore personalizzati


1
Sebbene ciò possa teoricamente rispondere alla domanda, sarebbe preferibile includere qui le parti essenziali della risposta e fornire il collegamento come riferimento.
Jasper,

3

Potresti semplicemente copiare i modelli che desideri da una versione precedente di Xcode, ho creato uno script di shell per questo: https://github.com/cDigger/AddMissingTemplates


Anche se questa potrebbe essere una soluzione funzionante, è probabilmente un'idea migliore utilizzare il supporto di categoria integrato in Xcode: in questo modo, i modelli saranno sempre aggiornati.
Zorayr,

1

È possibile creare un file "estensione" come 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 {


}

Fatto. goditi la programmazione

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.