Tôi đã một lớp cơ sở mà thực hiện một phần mở rộng đó phù hợp với một giao thức như sau:phương pháp giao thức ghi đè Swift trong các lớp tiểu
protocol OptionsDelegate {
func handleSortAndFilter(opt: Options)
}
extension BaseViewController: OptionsDelegate {
func handleSortAndFilter(opt: Options) {
print("Base class implementation")
}
}
Tôi đã một lớp con "InspirationsViewController" được thừa kế từ BaseViewController. Và tôi trọng phương pháp giao thức trong phần mở rộng như sau:
extension InspirationsViewController {
override func handleSortAndFilter(opt: Options) {
print("Inside inspirations")
}
}
Tôi nhận được lỗi khi tôi ghi đè "handleSortAndFilter" chức năng trong công tác khuyến lớp con: "Declerations trong phần mở rộng không thể ghi đè chưa"
Nhưng tôi không thấy vấn đề tương tự khi tôi triển khai nguồn dữ liệu UITableView và phương thức ủy nhiệm.
Làm cách nào để tránh lỗi này?
'InspirationsViewController' không phải là phân lớp, phần mở rộng của nó. Tôi nghĩ bạn đã định nghĩa sai. Nó phải là một lớp 'InspirationsViewController: BaseViewController' –
@HossamGhareeb mà anh ta đã nói' InspirationsViewController' là lớp con của 'BaseViewController', đây là phần mở rộng cho nó. Vấn đề này có lẽ chưa được thực hiện trong Swift, bạn nên ghi đè lên từ lớp chính, phần mở rộng là để thêm hàm khác – Tj3n
Trong phần mở rộng, chúng ta không thể ghi đè lên các phương thức của lớp siêu. –