How do I create a category in Xcode 6 or higher?

IosObjective CCategoriesXcode6

Ios Problem Overview


I want to create a category on UIColor in my app using Xcode 6. But the thing is that in Xcode 6 there is no Objective-C category file template.

Is there any option to create a category in Xcode 6?

Ios Solutions


Solution 1 - Ios

They didn't forget. They just moved it without telling anyone.

  1. Click File -> New -> File

  2. Select Objective-C file under Sources in iOS or Mac OS respectively and Click Next

  3. Now under File Type: choose either Category, Protocol, or Extension

PS. Under File Name: whatever you type here will be either the Category, Protocol, or Extension Name.

Solution 2 - Ios

To create CategoryBaseClass+CategoryName.m/.h:

  1. File → New → File... or use ⌘N.
  2. Select Objective-C File.

enter image description here

  1. Type in category name, select File Type: Category, and then select the base class.

enter image description here

  1. Complete the flow to create the category.

Solution 3 - Ios

Here's a visual demonstration:

creating a category file

Solution 4 - Ios

Xcode6-Beta5 update

The interface has now changed and it's possible to add a Category directly from the New > File window.

See unmircea's answer.


I was surprised myself, and I guess because of Swift they forgot about good old Objective-C.

You have two options:

  1. Create an Objective-C class with the category name, example UIView+Powerups, then manually change the interface to match the one of category. Note that the snippet for the category interface and implementation is still working, so that's extra easy: type @interface-category and @implementation-category.

  2. Import it from Xcode 5! Use this command:

> 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/

Close and reopen Xcode 6 and you'll find "Objective-C Category" in the wizard for the new file.

Solution 5 - Ios

There is no predefined template to create category in Xcode 6 beta(for time being),they may add this option later. As a work around you can create a Cocoa Touch Class(its not proper i know but no other way) named UIImage+Additions(ClassName+CategoryName) and override its interface and implementation some thing like

###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

Edit
This answer was written before finding a way of creating category in the Xcode 6 beta. Check unmircea's answer for the right way of creating category

Solution 6 - Ios

Extending unmircea's fantastic answer re: how to create a custom category to implement a custom UIColor palette, you could create a category.

Once you've created your category (in this example, it's a category called ColorPalette of class UIColor), you'll have a header and an implementation file.

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

To use your custom color palette, just import the header into the class where you'd like to implement your custom colors:

#import "UIColor+ColorPalette.h"

and call the color as you would a standard color like redColor, greenColor, or blueColor.

Here's a link to a slightly more in-depth discussion of creating a custom palette.

Additionally, here is a tool to help you select the custom color values

Solution 7 - Ios

You could just copy the templates you want from an older version of Xcode, I made a shell script for this:https://github.com/cDigger/AddMissingTemplates

Solution 8 - Ios

You can create "extension" file like 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 {
    

}

Done. enjoy coding

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionYalamandaraoView Question on Stackoverflow
Solution 1 - IosunomView Answer on Stackoverflow
Solution 2 - IosZorayrView Answer on Stackoverflow
Solution 3 - Iosrob mayoffView Answer on Stackoverflow
Solution 4 - IosmokagioView Answer on Stackoverflow
Solution 5 - IosAnil VargheseView Answer on Stackoverflow
Solution 6 - IosAdrianView Answer on Stackoverflow
Solution 7 - IosNSFishView Answer on Stackoverflow
Solution 8 - IosRohit SisodiaView Answer on Stackoverflow