ฉันจะสร้างหมวดหมู่ใน Xcode 6 ขึ้นไปได้อย่างไร


318

ฉันต้องการสร้างหมวดหมู่UIColorในแอพของฉันโดยใช้ Xcode 6 แต่สิ่งที่เป็นใน Xcode 6 ไม่มีเทมเพลตไฟล์หมวดหมู่ Objective-C

มีตัวเลือกในการสร้างหมวดหมู่ใน Xcode 6 หรือไม่?


คุณทำมาก่อน Xcode 6 ได้อย่างไร
holex

เพียงพิมพ์ออกมาในไฟล์ต้นฉบับ: @interface UIColor(MyCategory) ... ฯลฯ
JeremyP

8
ทำไมไม่เลือกคำตอบ การไม่ทำเช่นนั้นเป็นการเสียเวลาสำหรับผู้ใช้รายอื่นที่กำลังมองหาวิธีแก้ปัญหา
ทอมมี่ซี

หากคุณใช้ Swift คุณจะต้องสร้างส่วนขยายแทนหมวดหมู่ ดูคำตอบนี้สำหรับวิธีการ
Suragch

คำตอบ:


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 หรือฉันคิดว่าพวกเขาทำ โดยส่วนตัวแล้วฉันไม่เข้าใจว่าทำไม Swift จึงถูกเพิ่มเข้ามา Objective-C เป็นภาษาที่สวยงามและแสดงออกได้เมื่อคุณรู้จัก ... มันเป็นวัตถุที่อยู่เหนือ C ... Perrrfect
unom

8
Heh คำอธิบายที่กำหนดObjective-C Fileโดย XCode 6 คือ "ไฟล์ Objective-C ที่ว่างเปล่า" แทนที่จะเป็นคำอธิบายของฉันซึ่งเป็น "ไฟล์เก่าอย่างใดอย่างหนึ่งไม่ได้ว่างเปล่าไฟล์ Objective-C ที่คุณคุ้นเคย" ซึ่งทำให้ฉันค่อนข้างดี!
Benjohn

@unmircea ขอบคุณสำหรับการโพสต์ข้อมูลที่เป็นประโยชน์เช่นนั้น สำหรับแอปเปิ้ล: นี่มันโง่!
mbm29414

1
พวกเขาไม่ลืม พวกเขาย้ายมันโดยไม่บอกใคร เป็นเรื่องปกติเมื่อพิจารณาระดับเอกสารของ Apple โดยทั่วไปและบ่อยครั้งที่เอกสารขาดทั้งหมด
Duck

77

วิธีสร้างCategoryBaseClass + CategoryName.m / .h :

  1. File → New →ไฟล์ ... หรือใช้⌘N
  2. เลือกวัตถุประสงค์ 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 + 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

ไม่จำเป็นต้องแก้ปัญหาในตอนนี้เนื่องจากรุ่นสุดท้ายของ XCode 6 มีการรองรับหมวดหมู่ในตัว
Zorayr

@Zorayr มันได้รับคำตอบก่อนรุ่น Xcode 6 สุดท้ายและการแก้ไขก็ไม่ผิดเช่นกัน อย่าเพิ่งลงคะแนน
Anil Varghese

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, หรือgreenColorblueColor

นี่คือลิงก์ไปยังการอภิปรายเชิงลึกเพิ่มเติมเล็กน้อยเกี่ยวกับการสร้างจานสีแบบกำหนดเอง

นอกจากนี้นี่คือเครื่องมือที่จะช่วยคุณเลือกค่าสีที่กำหนดเอง


1
ในขณะที่สิ่งนี้อาจตอบคำถามในทางทฤษฎีมันก็ควรที่จะรวมส่วนสำคัญของคำตอบที่นี่และให้ลิงค์สำหรับการอ้างอิง
แจสเปอร์

3

คุณสามารถคัดลอกเทมเพลตที่คุณต้องการจาก Xcode รุ่นเก่าฉันทำเชลล์สคริปต์สำหรับสิ่งนี้: https://github.com/cDigger/AddMissingTemplates


แม้ว่านี่อาจเป็นวิธีแก้ปัญหาที่ใช้งานได้ แต่ก็เป็นความคิดที่ดีที่จะใช้การสนับสนุนหมวดหมู่ที่สร้างไว้ใน Xcode ด้วยวิธีนี้เทมเพลตจะเป็นรุ่นล่าสุดเสมอ
Zorayr

1

คุณสามารถสร้างไฟล์ "extension" เช่น 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.