Tôi muốn bắt đầu sử dụng Swift trong dự án Objective-C của mình. Vì vậy, tôi đã thêm một lớp nhanh chóng:
import Foundation
@objc class System : NSObject {
@objc func printSome() {
println("Print line System");
}
}
Và nhập nó vào một tệp .m:
#import "MyProjectName-Swift.h"
Khi xây dựng dự án của tôi, tôi nhận được lỗi sau:
Bridging header 'PathToMyProject/MyProjectName-Bridging-Header.h' does not exist
LƯU Ý: Trong "Cài đặt bản dựng-> Trình biên dịch Swift - Tạo mã-> Tiêu đề trình chiếu mục tiêu-C" được đặt thành MyProjectName-Bridging-Header.h
Tôi nên làm gì để giải quyết vấn đề này?
Bất kỳ sự giúp đỡ nào cũng được đánh giá cao.
EDIT: Tập tin Bridging-Header: #if được xác định (__ has_include) && __has_include () # bao gồm #endif
#include <objc/NSObject.h>
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>
#if defined(__has_include) && __has_include(<uchar.h>)
# include <uchar.h>
#elif __cplusplus < 201103L
typedef uint_least16_t char16_t;
typedef uint_least32_t char32_t;
#endif
#if !defined(SWIFT_PASTE)
# define SWIFT_PASTE_HELPER(x, y) x##y
# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y)
#endif
#if !defined(SWIFT_METATYPE)
# define SWIFT_METATYPE(X) Class
#endif
#if defined(__has_attribute) && __has_attribute(objc_runtime_name)
# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X)))
#else
# define SWIFT_RUNTIME_NAME(X)
#endif
#if !defined(SWIFT_CLASS_EXTRA)
# define SWIFT_CLASS_EXTRA
#endif
#if !defined(SWIFT_PROTOCOL_EXTRA)
# define SWIFT_PROTOCOL_EXTRA
#endif
#if !defined(SWIFT_CLASS)
# if defined(__has_attribute) && __has_attribute(objc_subclassing_restricted)
# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA
# else
# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# endif
#endif
#if !defined(SWIFT_PROTOCOL)
# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
#endif
#if !defined(SWIFT_EXTENSION)
# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__)
#endif
#if !defined(OBJC_DESIGNATED_INITIALIZER)
# if defined(__has_attribute) && __has_attribute(objc_designated_initializer)
# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
# else
# define OBJC_DESIGNATED_INITIALIZER
# endif
#endif
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch"
#if defined(__has_feature) && __has_feature(modules)
#endif
#pragma clang diagnostic pop
MyProjectName-Swift.h
vàMyProjectName-Bridging-Header.h
làm việc theo hướng ngược lại.MyProjectName-Swift.h
được cung cấp tự động.MyProjectName-Bridging-Header.h
tuy nhiên, được cung cấp bán tự động, tức là bạn phải chắc chắn rằng nó ở đó. Vì vậy, bạn có chắc chắn rằng bạn có thể nhìn thấyMyProjectName-Bridging-Header.h
trong điều hướng dự án của bạn? Nếu không, tạo và thêm một tệp có tên đó vào dự án của bạn. Sau đó kiểm tra lại xem đường dẫn đến nó trong Cài đặt bản dựng có chính xác không (nó sẽ bao gồm thư mục dự án của bạn :MyProjectName/MyProjectName-Bridging-Header.h
.