Bagaimana cara membuat kategori dalam Xcode 6 atau lebih tinggi?

318

Saya ingin membuat kategori di UIColordalam aplikasi saya menggunakan Xcode 6. Tapi masalahnya di Xcode 6 tidak ada templat file kategori Objective-C.

Apakah ada opsi untuk membuat kategori di Xcode 6?

Yalamandarao
sumber
bagaimana Anda melakukannya sebelum Xcode 6?
holex
Cukup ketikkan di file sumber: @interface UIColor(MyCategory) ... etc
JeremyP
8
Mengapa tidak memilih jawaban ?? Tidak melakukan hal itu menghabiskan waktu bagi pengguna lain yang mencari solusinya.
Tommie C.
Jika Anda menggunakan Swift, maka Anda akan membuat Ekstensi daripada Kategori. Lihat jawaban ini untuk cara melakukannya.
Suragch

Jawaban:

745

Mereka tidak lupa. Mereka hanya memindahkannya tanpa memberitahu siapa pun.

  1. Klik File-> New->File

  2. Pilih di Objective-C filebawah atau masing-masing dan Klik BerikutnyaSourcesiOSMac OS

  3. Sekarang di bawah File Type:memilih salah Category, ProtocolatauExtension

PS. Di bawah File Name:apa pun yang Anda ketik di sini akan menjadi baik Category, Protocolatau ExtensionNama.

unom
sumber
13
Ini sangat membingungkan.
Ben Sinclair
6
Mereka hanya mengakomodasi menambahkan Swift dan menyembunyikan segala sesuatu di bawah Objective-C atau saya pikir mereka melakukannya. Saya pribadi tidak mengerti mengapa Swift ditambahkan, Objective-C adalah bahasa yang begitu indah dan ekspresif setelah Anda mengetahuinya ... Ini Objek di atas C ... Perrrfect
unom
8
Heh, deskripsi yang diberikan Objective-C Fileoleh XCode 6 adalah "File Empty Objective-C.", Daripada deskripsi saya yang akan menjadi, "salah satu yang lama, tidak sama sekali kosong, file Objective-C yang Anda gunakan untuk" , Yang melemparkan saya cukup baik!
Benjohn
@unmircea Terima kasih telah memposting informasi bermanfaat tersebut. Untuk Apple: Ini bodoh!
mbm29414
1
Mereka tidak lupa. Mereka hanya memindahkannya tanpa memberitahu siapa pun. apa yang khas, mengingat tingkat jelek dari dokumentasi Apple secara umum dan paling sering kurangnya dokumentasi.
Bebek
77

Untuk membuat CategoryBaseClass + CategoryName.m / .h :

  1. File → Baru → File ... atau gunakan ⌘N .
  2. Pilih File Objective-C .

masukkan deskripsi gambar di sini

  1. Ketik nama kategori, pilih Jenis File: Kategori , lalu pilih kelas dasar.

masukkan deskripsi gambar di sini

  1. Selesaikan alur untuk membuat kategori.
Zorayr
sumber
37

Berikut ini adalah demonstrasi visual:

membuat file kategori

rob mayoff
sumber
19

Pembaruan Xcode6-Beta5

Antarmuka kini telah berubah dan dimungkinkan untuk menambahkan Kategori langsung dari jendela File> Baru.

Lihat jawaban unmircea .


Saya sendiri terkejut, dan saya rasa karena Swift mereka lupa tentang Objective-C tua yang baik.

Anda memiliki dua opsi:

  1. Buat kelas Objective-C dengan nama kategori, contoh UIView+Powerups, lalu ubah antarmuka secara manual agar sesuai dengan salah satu kategori. Perhatikan bahwa cuplikan untuk antarmuka kategori dan implementasi masih berfungsi, jadi itu ekstra mudah: ketik @interface-categorydan @implementation-category.

  2. Impor dari Xcode 5! Gunakan perintah ini:

    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/

    Tutup dan buka kembali Xcode 6 dan Anda akan menemukan "Objective-C Category" di wizard untuk file baru.

mokagio
sumber
2
FYI: jika Anda menggunakan beta yang lebih baru, cukup ganti Xcode-beta.app di baris ke Xcode6-betaX.app di mana X adalah nomor beta.
Alex si Ukraina
1
Salah! Lihat jawabannya dengan unmircea di bawah untuk jawaban yang benar - itu tidak hilang, baru saja pindah ..
Jay
12

Tidak ada templat yang telah ditentukan untuk membuat kategori dalam Xcode 6 beta (untuk sementara waktu), mereka dapat menambahkan opsi ini nanti. Sebagai pekerjaan di sekitar Anda dapat membuat Cocoa Touch Class(itu tidak tepat saya tahu tetapi tidak ada cara lain) bernama UIImage+Additions(ClassName + CategoryName) dan menimpa antarmuka dan implementasi beberapa hal seperti

UIImage + Additions.h

#import <UIKit/UIKit.h>

@interface UIImage(Additions)

+(void)testMethod;

@end 

UIImage + Tambahan.m

#import "UIImage+Additions.h"

@implementation UIImage (Additions)

+(void)testMethod
{

}

@end

Sunting
Jawaban ini ditulis sebelum menemukan cara membuat kategori dalam Xcode 6 beta. Periksa jawaban unmircea untuk cara yang benar dalam membuat kategori

Anil Varghese
sumber
Apple lupa menambahkan Kategori Objective-c, ekstensi kelas Objective-c, template Objective-c Protokol ....
Yalamandarao
Saya membuat laporan bug # 17627118 jika Anda ingin menduplikatnya.
David Pettigrew
Tidak perlu untuk solusi sekarang karena versi final XCode 6 memiliki dukungan kategori bawaan.
Zorayr
@Zorayr Menjawab sebelum versi Xcode 6 terakhir dan menyelesaikannya juga tidak salah. Jangan hanya memilih.
Anil Varghese
6

Memperluas jawaban fantastis unmircea tentang : cara membuat kategori khusus untuk menerapkan UIColorpalet kustom , Anda bisa membuat kategori.

Setelah Anda membuat kategori Anda (dalam contoh ini, itu adalah kategori yang disebut ColorPalettedari kelas UIColor ), Anda akan memiliki header dan file implementasi.

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

Untuk menggunakan palet warna khusus Anda, cukup impor header ke kelas tempat Anda ingin menerapkan warna khusus Anda:

#import "UIColor+ColorPalette.h"

dan memanggil warna seperti yang Anda lakukan warna standar seperti redColor, greenColor, atau blueColor.

Berikut ini tautan ke diskusi yang sedikit lebih mendalam tentang cara membuat palet khusus.

Selain itu, berikut adalah alat untuk membantu Anda memilih nilai warna kustom

Adrian
sumber
1
Sementara ini secara teoritis dapat menjawab pertanyaan, akan lebih baik untuk memasukkan bagian-bagian penting dari jawaban di sini, dan menyediakan tautan untuk referensi.
Jasper
3

Anda dapat menyalin templat yang Anda inginkan dari versi Xcode yang lebih lama, saya membuat skrip shell untuk ini: https://github.com/cDigger/AddMissingTemplates

NSFish
sumber
Meskipun ini mungkin solusi yang berfungsi, mungkin ide yang lebih baik untuk menggunakan dukungan kategori yang dibangun dalam Xcode - dengan cara ini, templat akan selalu terbarui.
Zorayr
1

Anda dapat membuat file "ekstensi" seperti 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 {


}

Selesai nikmati pengkodean

Rohit Sisodia
sumber