Як створити категорію в Xcode 6 або вище?


318

Я хочу створити категорію UIColorу своєму додатку за допомогою Xcode 6. Але річ у тому, що в Xcode 6 немає шаблону файлів файлів категорії Objective-C.

Чи є можливість створити категорію в Xcode 6?


як ти це зробив до Xcode 6?
holex

Просто введіть його у вихідний файл: @interface UIColor(MyCategory) ... тощо
JeremyP

8
Чому б не вибрати відповідь ?? Не роблячи цього, витрачає час для інших користувачів, які шукають рішення.
Tommie C.

Якщо ви використовуєте Swift, то ви створили б розширення, а не категорію. Дивіться цю відповідь, як це зробити.
Сурагч

Відповіді:


745

Вони не забули. Вони просто перемістили його, нікому не сказавши.

  1. Клацніть File-> New->File

  2. Виберіть в Objective-C fileвідповідно Sourcesз iOSабо , Mac OSвідповідно , і натисніть кнопку Далі

  3. Тепер під File Type:вибрати або Category, ProtocolабоExtension

PS. Під File Name:що ви вводите тут буде або Category, Protocolабо Extensionім'я.


13
Це так заплутано.
Бен Сінклер

6
Їм просто вдалося додати Swift і приховати все під Objective-C, або я думаю, що вони зробили. Я особисто не розумію, чому додали Свіфта, Objective-C - така гарна та виразна мова, коли ви її познайомитесь ... Це Об'єкти поверх C ... Perrrfect
unom

8
Так, опис, даний Objective-C FileXCode 6, - це "Порожній файл Objective-C.", А не мій опис, який був би "одним із старих, зовсім не порожніх файлів Objective-C, до яких ви звикли". , що мене досить красиво скинуло!
Бенджон

@unmircea Дякую за публікацію такої корисної інформації. Яблукові: Це дурно!
mbm29414

1
Вони не забули. Вони просто перемістили його, нікому не сказавши. що є типовим, враховуючи шалений рівень документації Apple в цілому і найчастіше повну відсутність документації.
Качка

77

Щоб створити CategoryBaseClass + CategoryName.m / .h :

  1. Файл → Новий → Файл ... або скористайтесь ⌘N .
  2. Виберіть файл Objective-C .

введіть тут опис зображення

  1. Введіть назву категорії, виберіть Тип файлу: Категорія та виберіть базовий клас.

введіть тут опис зображення

  1. Заповніть потік, щоб створити категорію.


19

Оновлення Xcode6-Beta5

Тепер інтерфейс змінився, і ви можете додати категорію безпосередньо у вікні Створити> Файл.

Дивіться відповідь unmircea .


Я сам здивувався, і, мабуть, через Свіфт вони забули про старий добрий Objective-C.

У вас є два варіанти:

  1. Створіть клас Objective-C з назвою категорії, наприклад UIView+Powerups, потім вручну змініть інтерфейс, щоб він відповідав одному з категорії. Зауважте, що фрагмент інтерфейсу категорії та його реалізація все ще працює, тому це дуже просто: введіть @interface-categoryі @implementation-category.

  2. Імпортуйте його з Xcode 5! Використовуйте цю команду:

    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/

    Закрийте та повторно відкрийте Xcode 6, і ви знайдете "Категорію Objective-C" у майстрі нового файлу.


2
FYI: якщо ви використовуєте пізніше бета-версію, просто змініть Xcode-beta.app у рядку на Xcode6-betaX.app, де X - бета-номер.
Олексій Українець

1
Неправильно! Перевірте відповідь unmircea нижче для правильної відповіді - вона не пішла, вона просто переїхала ..
Jay

12

Немає заздалегідь визначеного шаблону для створення категорії в бета-версії Xcode 6 (на даний момент), вони можуть додати цю опцію пізніше. Як робота навколо, ви можете створити Cocoa Touch Class(його не правильно, я знаю, але іншого способу) з назвою UIImage+Additions(ClassName + CategoryName) та змінити його інтерфейс та реалізацію на щось подібне

UIImage + Додатки.h

#import <UIKit/UIKit.h>

@interface UIImage(Additions)

+(void)testMethod;

@end 

UIImage + Доповнення.m

#import "UIImage+Additions.h"

@implementation UIImage (Additions)

+(void)testMethod
{

}

@end

Редагувати
Ця відповідь була написана, перш ніж знайти спосіб створення категорії в бета-версії Xcode 6. Перевірте відповідь unmircea на правильний спосіб створення категорії


Apple забула додати категорію Objective-c, розширення класу Objective-c, шаблони протоколів Objective-c ....
Yalamandarao

Я створив звіт про помилку # 17627118, якщо ви хочете його скопіювати.
Девід Петтігрю

Зараз немає необхідності у вирішенні, оскільки остаточна версія XCode 6 має вбудовану підтримку категорії.
Зорайр

@Zorayr На це відповіли перед остаточною версією Xcode 6, і робота навколо також не помиляється. Не просто голосувати.
Аніл Варгезе

6

Розширення фантастичної відповіді unmircea щодо : як створити спеціальну категорію для реалізації спеціальної UIColorпалітри, ви можете створити категорію.

Після того як ви створили категорію (в даному прикладі це категорія називається ColorPaletteз класу UIColor ), ви будете мати заголовок і файл реалізації.

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

Щоб використовувати власну палітру кольорів, просто імпортуйте заголовок у клас, у який ви хочете реалізувати свої власні кольори:

#import "UIColor+ColorPalette.h"

і називати колір , як ви б стандартний колір , як redColor, greenColorабо blueColor.

Ось посилання на трохи більш поглиблене обговорення створення власної палітри.

Крім того, ось інструмент, який допоможе вам вибрати спеціальні значення кольору


1
Хоча це теоретично може відповісти на питання, бажано було б сюди включити істотні частини відповіді та надати посилання для довідки.
Джаспер

3

Ви можете просто скопіювати потрібні шаблони зі старої версії Xcode, я створив для цього сценарій оболонки: https://github.com/cDigger/AddMissingTemplates


Хоча це може бути робочим рішенням, напевно, краща ідея використовувати підтримку категорії, вбудовану в Xcode - таким чином, шаблони завжди будуть актуальними.
Зорайр

1

Ви можете створити файл "розширення" на зразок 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 {


}

Зроблено. насолоджуйтесь кодуванням

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.