我正在尝试为WebView类创建一个Swift协议,以便它可以在Javascript中使用。除了bool属性之外,这适用于大多数属性。原因是幕后的Obj-C getter命名方式不同(对于loading: Bool
属性,getter为isLoading
)。如何在我的Swift协议中指定这样的getter?
以下是相关代码:
@objc protocol WebViewJSExport : JSExport {
var mainFrame: WebFrame! { get };
var selectedFrame: WebFrame! { get };
var loading: Bool { get };
var mainFrameURL: String! { get };
var mainFrameDocument: DOMDocument! { get };
var mainFrameTitle: String! { get };
}
当我在班上使用这个协议时:
class WebClient: WebView, WebViewJSExport {
}
我收到此编译器错误(包含2个详细信息条目):
键入' WebClient'不符合协议' WebViewJSExport'
协议要求财产加载'使用' Bool'
Objective-C方法' isLoading'由getter提供的“loading'不 不符合要求的选择器(' loading')