Xcode 6以降でカテゴリを作成するにはどうすればよいですか?


318

UIColorXcode 6を使用してアプリにカテゴリを作成したいのですが、Xcode 6にはObjective-Cカテゴリファイルテンプレートがないということです。

Xcode 6でカテゴリを作成するオプションはありますか?


Xcode 6以前はどのように行いましたか?
holex 2014年

ソースファイルに入力するだけです:@interface UIColor(MyCategory) ... etc
JeremyP

8
答えを選んでみませんか?そうしないと、ソリューションを探している他のユーザーの時間を浪費します。
トミーC.

Swiftを使用している場合は、カテゴリではなく拡張を作成します。それを行う方法については、この回答を参照してください。
Suragch

回答:


745

彼らは忘れなかった。彼らは誰にも言わずに移動しただけです。

  1. クリックFile-> New->File

  2. Objective-C file下または下Sourcesをそれぞれ選択し、次へをクリックしますiOSMac OS

  3. 今すぐ下File Type:のどちらかを選択CategoryProtocolまたはExtension

PS。下にFile Name:何でも、あなたはどちらかになり、ここで入力しCategoryProtocolまたはExtension名前。


13
これはとても混乱しています。
Ben Sinclair

6
彼らはSwiftの追加に対応し、Objective-Cの下にすべてを隠しました。私が個人的にSwiftが追加された理由はわかりません。Objective-Cは、一度知ってしまえば、とても美しく表現力豊かな言語です... Cの上にあるオブジェクトです... Perrrfect
unom

8
えっと、Objective-C FileXCode 6の説明は「空のObjective-Cファイル」であり、「慣れている古い、まったく空ではないObjective-Cファイルの1つ」という私の説明ではありません。 、それはかなりうまく私を捨てました!
ベンジョン2014

@unmirceaそのような有用な情報を投稿してくれてありがとう。アップルへ:これは愚かです!
mbm29414 2014

1
彼らは忘れなかった。彼らは誰にも言わずに移動しただけです。典型的なもの、一般的にAppleのドキュメントのくだらないレベル、そして最も頻繁にはドキュメントの完全な欠如を考えると。
ダック

77

CategoryBaseClass + CategoryName.m / .hを作成するには:

  1. ファイル→新規→ファイル...または⌘Nを使用します
  2. Objective-Cファイルを選択します

ここに画像の説明を入力してください

  1. カテゴリ名を入力し、[ ファイルタイプ:カテゴリ]を選択して、基本クラスを選択します。

ここに画像の説明を入力してください

  1. フローを完了して、カテゴリを作成します。


19

Xcode6-Beta5アップデート

インターフェイスが変更され、[新規]> [ファイル]ウィンドウから直接カテゴリを追加できるようになりました。

unmirceaの回答を参照してください。


私は驚きました、そしてSwiftのせいで彼ら古き良きObjective-C を忘れいたのでしょう。

次の2つのオプションがあります。

  1. カテゴリ名example UIView+PowerupsでObjective-Cクラスを作成し、手動でインターフェイスを変更してカテゴリの1つに一致させます。カテゴリのインターフェースと実装のスニペットはまだ機能しているため、これは非常に簡単です:タイプ@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 Category」が表示されます。


2
参考:新しいベータ版を使用している場合は、行のXcode-beta.appをXcode6-betaX.appに変更してください。Xはベータ版の番号です。
Alex the Ukrainian

1
違う!で答えをチェックunmircea正しい答えを下に-それがなくなっていない、それだけで...動いた
ジェイ

12

Xcode 6ベータ(現時点では)にカテゴリを作成するための事前定義されたテンプレートはありません。後でこのオプションを追加する場合があります。回避策として、(ClassName + CategoryName)Cocoa Touch Classという名前のUIImage+Additions(適切ではないが他の方法ではない)を作成し、そのインターフェースと実装を次のようにオーバーライドできます

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

編集
この回答は、Xcode 6ベータ版でカテゴリを作成する方法を見つける前に書かれました。カテゴリを作成する正しい方法についてはunmirceaの回答を確認してください


Appleは、Objective-cカテゴリー、Objective-cクラス拡張、Objective-cプロトコルテンプレートを追加するのを忘れていました...
Yalamandarao

複製したい場合は、バグレポート#17627118を作成しました。
David Pettigrew、2014

XCode 6の最終バージョンには、カテゴリサポートが組み込まれているため、回避策は必要ありません。
Zorayr、2015年

@Zorayr最終的なXcode 6バージョンの前に回答され、回避策も間違っていません。単に反対票を投じないでください。
Anil Varghese、2015年

6

unmirceaのファンタスティックアンサー re 拡張:カスタムカテゴリを作成してカスタムを実装する方法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に色を呼び出します。greenColorblueColor

これは、カスタムパレットの作成に関するもう少し詳細な説明へのリンクです。

さらに、カスタムカラー値を選択するのに役立つツールがあります


1
これにより理論的には質問に答えることができますが、ここに答えの本質的な部分を含め、参照用のリンクを提供することが望ましいでしょう
Jasper

3

古いバージョンのXcodeから必要なテンプレートをコピーすることもできます。このためのシェルスクリプトを作成しました:https : //github.com/cDigger/AddMissingTemplates


これは実用的なソリューションかもしれませんが、Xcodeに組み込まれているカテゴリサポートを使用することをお勧めします。これにより、テンプレートは常に最新の状態になります。
Zorayr 2014

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 {


}

できました。コーディングを楽しむ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.