Ví dụ tôi có phương pháp này trong nhanh chóng:Làm thế nào để gọi hàm Swift với nhiều hơn một tham số từ lớp C mục tiêu?
@objc class MyClass: NSObject
....
@objc class func viewWithIndex(index: Int, str: String) {
println(index, str)
}
sau đó tôi muốn gọi là phương pháp trong lớp Mục tiêu-c của tôi, và tôi đã mong đơn giản như cuộc gọi này [MyClass viewWithIndex:10 str:@"string"];
nhưng nó không hoạt động.
Tôi gọi nó như thế nào? Hãy giúp tôi.
Lưu ý: Tôi đã thực hiện cuộc gọi chức năng nhanh đến mục tiêu [MyClass showSomething];
để có nghĩa là tôi đã thiết lập thành công các cài đặt cần thiết cho các lớp cầu nối. Chỉ có chức năng có hai tham số nữa là vấn đề của tôi. :)
quyết:
Tôi không biết những gì tôi đã xảy ra nhưng tôi chỉ cần khởi động lại mac của tôi và lấy ra objc
và nó làm việc với các cuộc gọi [MyClass viewWithIndex:10 str:@"string"];
. Tôi nhớ đọc trong tài liệu.
Migrating Your Objective-C Code to Swift
- Để có thể truy cập và sử dụng được trong Objective-C, một lớp Swift phải là hậu duệ của một lớp Objective-C hoặc nó phải được đánh dấu @objc.
Điều gì không hiệu quả? Bạn có lỗi biên dịch hay lỗi thời gian chạy? – Francescu
Lớp Swift của bạn có phải là lớp con của NSObject không? So sánh http://stackoverflow.com/questions/25605677/productmodulename-swift-h-not-exporting-all-swift-classes. –
Tôi có một cuộc gọi hàm nhanh làm việc với lớp khách quan-c nhưng không có tham số hoặc chỉ một tham số. bây giờ tôi muốn thử hai hoặc nhiều tham số. lỗi mà nó tạo ra là 'Không có phương thức lớp đã biết cho chế độ xem selectorWithIndex: str' –