2014-09-24 29 views
35

Gần đây tôi đã nâng cấp XCode từ 5.1.1 lên XCode 6.0.1. Bây giờ mỗi lần tôi muốn xác định một đối tượng UIImage mới tôi nhận được lỗi này:Tên loại không xác định 'UIImage'

Unknown type name 'UIImage'

Code:
1. Tạo một dự án mới
2. Thêm Image View kiểm soát để các kịch bản
3. Tham khảo các Image View bởi thêm IBOutlet
4. Thêm lớp tập tin mới
5. Thêm dòng mã sau vào file header của lớp mới:

@property (strong, nonatomic) UIImage *background;

header file (.h) nội dung:

 
#import <Foundation/Foundation.h> 

@interface CCTile : NSObject 

@property (strong, nonatomic) NSString *story; 
@property (strong, nonatomic) UIImage *background; // Error: Unknown type name 'UIImage' 

@end 

Tuy nhiên, nếu tôi thêm #import <UIKit/UIKit.h> đến tập tin tiêu đề (ở trên) tất cả mọi thứ có vẻ OK! Bất kỳ ý tưởng nào tôi thiếu ở đây, xin vui lòng? Đây có phải là sự thay đổi trong các tệp tiêu đề XCode không!

+0

Nếu không nhập UIKit trình biên dịch không biết UII là gì. UIImage được định nghĩa trong UIKit, do đó bạn cần phải nhập nó. Có lẽ Xcode không tự động nhập này vì bạn đang phân lớp từ NSObject chứ không phải UIViewController hoặc lớp con của nó –

+0

#import này không được yêu cầu trong XCode 5 như tôi nhớ! UIImage đã được biết đến bằng cách nào đó, có thể bởi vì nó đã được xác định trong (main.m), đó là trường hợp với XCode 6 tuy nhiên! Vâng, tôi nghĩ rằng có một sự thay đổi trong XCode 6 gây ra hành vi này. – aenawi

Trả lời

81

Tôi cũng có cùng một vấn đề và cố định nó bằng cách sử

#import <UIKit/UIKit.h> 

Tuy nhiên, tôi đào xung quanh một số chi tiết và so sánh một dự án thực hiện trong XCode 6 so với Xcode 5, và tôi nhận thấy rằng Xcode 6 không tạo ra một tệp tiêu đề tiền tố. Tệp tiêu đề tiền tố được nhập hoàn toàn vào mọi lớp và tệp tiêu đề tiền tố (.pch) bao gồm UIKit cũng như Nền tảng.

Để tạo tệp pch, hãy chuyển đến Tệp -> Mới -> Tệp -> Khác -> tệp PCH. Chỉnh sửa tên thành "YourProject-prefix.pch". Thêm các mục sau:

#ifdef __OBJC__ 
#import <UIKit/UIKit.h> 
#import <Foundation/Foundation.h> 
#endif 

Sau đó, bạn cần đặt cài đặt bản dựng. Đi đến dự án của bạn -> cài đặt xây dựng -> tìm kiếm ở trên cùng: tiêu đề tiền tố.

Bạn sẽ thấy Tiền tố tiền tố biên dịch trước -> thay đổi thành có. Ngoài ra, ngay bên dưới là Tiền tố Đầu trang. Thêm đường dẫn của tiêu đề tiền tố của bạn. Nên giống như: "YourProject/YourProject-prefix.pch".

+1

công cụ tuyệt vời, như thế này bạn không phải suy nghĩ về việc nhập UIKit theo cách thủ công trong mỗi tệp có liên quan. cảm ơn! –

+0

Tôi đang đối mặt với cùng một vấn đề, nhưng trong tệp của nhóm. Bây giờ tôi không thể thay đổi tệp pod (vì nó sẽ thay đổi nó trên bản cập nhật tiếp theo). Và tôi muốn sử dụng Modulus mới được cung cấp bởi Xcode 6 thay vì tệp pch. N –

+0

nó rất hữu ích cho tôi. – Anju

10

cho tên loại không xác định 'UIImage' hoặc bất kỳ đối tượng giao diện người dùng nào được yêu cầu.

#import (UIKit) điều này sẽ giải quyết được sự cố của bạn. điều này đang làm việc cho tôi ....

+2

Tôi đã nhận thấy điều đó! Tôi tự hỏi tại sao điều này xảy ra với XCode 6! Trong XCode 5, tôi không nhớ rằng tôi phải #import bất kỳ tiêu đề bổ sung nào cho các đối tượng UI bình thường. – aenawi

6

Chạy vào cùng một vấn đề. Giải quyết nó bằng cách làm

#import <UIKit/UIKit.h> 

Kudos táo: P

+0

Điều này đúng 100% và nó phù hợp với tôi. –

Các vấn đề liên quan