tôi muốn tuyên bố trong một giao thức một class func
, tôi có ý định để phù hợp với giao thức này từ một lớp A, B và C.Nghị định thư cho phương pháp lớp
B và C kế thừa từ A.
Về cơ bản tôi muốn ghi đè func này trong B và C trong khi vẫn cung cấp một thực hiện trong A.
vì vậy, tôi đã phải tuyên bố giao thức của tôi như sau:
protocol MyManagedObjectCoolStuff {
static func entityName() -> String
}
và sau đó tôi có t của anh ấy trong A:
class A: NSManagedObject { }
class B: A { }
class C: A { }
extension A: MyManagedObjectCoolStuff {
static func entityName() -> String {
return "Animal"
}
}
extension B: MyManagedObjectCoolStuff {
override static func entityName() -> String {
return "Bat"
}
}
extension C: MyManagedObjectCoolStuff {
override static func entityName() -> String {
return "Cat"
}
}
Vấn đề ở đây, rõ ràng và Xcode xác nhận: "Phương thức lớp ghi đè" phương thức lớp cuối cùng ".
Làm cách nào tôi có thể giải quyết vấn đề này? Tôi không thể sử dụng class func
trong giao thức ... Tôi không chắc chắn làm thế nào để trừu tượng điều này.
Cảm ơn!
remove 'static' ghi đè tại B và C, không thể có hai triển khai của một hàm tĩnh – Daniel
Ngoài ra, không làm cho B và C kế thừa từ A. – Daniel