Tôi có dự án Swift và Objective-C hỗn hợp. Để truy cập API công cộng Swift trong Objective-C, người tiêu dùng API hiện phải nhập "MyModule-Swift.h". Tôi đã có một tiêu đề ô Object-C gọi là "MyModule.h". Tuy nhiên, việc nhập "MyModule.h" sẽ không hoạt động đối với API Swift. Tôi đã thử nhập "MyModule-Swift.h" trong tiêu đề ô, nhưng nó không tìm thấy nó (tôi giả sử vì nó được tạo ra trên bay bởi Xcode).Bao gồm -Swift.h trong tiêu đề ô
Bất kỳ đề xuất nào để người tiêu dùng API luôn có thể nhập "MyModule.h" để sử dụng các API công cộng được viết bằng Swift/Objective-C sẽ thực sự được đánh giá cao.
============================================== ======================
Chỉnh sửa: Tôi xin lỗi vì đã dành thời gian để đặt đúng câu hỏi. Tôi có một khung được gọi là MyModule
.
Tôi có một lớp Objective-C được gọi là ABUser
,
@interface ABUser: NSObject
- (void)walk;
@end
tôi muốn thêm hành vi mới vào lớp này sử dụng Swift, vì vậy tôi định nghĩa một phần mở rộng
extension ABUser {
func swiftWalk()
}
Bây giờ, nói rằng tôi muốn để truy cập phương thức swiftWalk
được xác định trên ABUser
từ ứng dụng Objective-C, tôi sẽ phải #import <MyModule/MyModule-Swift.h>
. #import <MyModule/MyModule.h>
sẽ hoạt động nếu tôi muốn sử dụng phương thức walk
. Đây là giả định ô tiêu đề MyModule.h
nhập ABUser.h
.
Tôi luôn muốn ứng dụng Objective-C đến #import <MyModule/MyModule.h>
và không bao giờ phải lo lắng về việc liệu một API được viết trong Objective-C hay Swift trong khuôn khổ. Vì vậy, tôi đã thử nhập MyModule-Swift.h
vào ô tiêu đề MyModule.h
. Nhưng, ứng dụng Objective-C của tôi không biên dịch nếu làm điều đó. Không chắc chắn, nếu điều này là do MyModule-Swift.h
được tạo bởi Xcode khi đang di chuyển trong quá trình xây dựng.
Chỉnh sửa 2: Thêm một dự án mẫu để tạo lại vấn đề này ở đây: https://github.com/priteshshah1983/MyObjectiveCApp
Mã liên quan là trong ViewController.m
. Việc xây dựng sẽ thất bại với chi nhánh master
. Để nó hoạt động, hãy kiểm tra chi nhánh working
.
"Vui lòng giải thích" Động cơ của tôi là gì? Bạn đã trao cho chính mình câu trả lời đúng, vì vậy tiền thưởng không thể nhận được. Bạn đã bỏ đi 50 điểm cho không có gì, quá ... Và câu hỏi vẫn còn khá thối. "Nhưng, điều này không làm việc" ngay cả _mean_? – matt
Ok, tôi đã rút lại câu trả lời của mình là câu trả lời đúng. Xin lỗi, tôi không nghĩ rằng tôi có thể giải thích nó tốt hơn mặc dù điều này. Tôi nhận thấy bạn đã bỏ phiếu cho tôi vì điều đó! – pshah
Bạn không thể chỉ hiển thị tất cả mã thực tế cần thiết để ai đó hiểu và tái tạo sự cố? – matt