Быстрое расширение, соответствующее протоколу
У меня возникли проблемы с созданием расширения в Swift, которое соответствует протоколу.
В Objective-C я мог бы создать категорию, соответствующую протоколу:
SomeProtocol.h
@protocol SomeProtocol
...
@end
UIView + CategoryName
#import SomeProtocol.h
@interface UIView (CategoryName) <SomeProtocol>
...
@end
Я пытаюсь добиться этого с помощью Swift Extension
SomeProtocol.swift
protocol SomeProtocol {
...
}
Расширение UIView
import UIKit
extension UIView : SomeProtocol {
...
}
Я получаю следующую ошибку компилятора:
Тип 'UIView' не соответствует протоколу 'SomeProtocol'
Ответы
Ответ 1
Пожалуйста, дважды проверьте в своем расширении, что вы внедрили все методы, определенные в протоколе. Если функция a не реализована, тогда вы получите ошибку компилятора, которую вы указали.
protocol SomeProtocol {
func a()
}
extension UIView : SomeProtocol {
func a() {
// some code
}
}
Ответ 2
//**Create a Protocol:**
protocol ExampleProtocol {
var simpleDescription: String { get }
func adjust()-> String
}
//**Create a simple Class:**
class SimpleClass {
}
//**Create an extension:**
extension SimpleClass: ExampleProtocol {
var simpleDescription: String {
return "The number \(self)"
}
func adjust()-> String {
return "Extension that conforms to a protocol"
}
}
var obj = SimpleClass() //Create an instance of a class
println(obj.adjust()) //Access and print the method of extension using class instance(obj)
Результат: расширение, соответствующее протоколу
Надеюсь, это поможет..!