簡體   English   中英

Swift 類不符合帶有錯誤處理的 Objective-C 協議

[英]Swift class does not conform to Objective-C protocol with error handling

我有Objective-C協議

@protocol SomeObjCProtocol
- (BOOL) doSomethingWithError: (NSError **)error;
@end

Swift

class SwiftClass : SomeObjCProtocol
{
    func doSomething() throws {    
    }
}

編譯器給我一個error

類型 'SwiftClass' 不符合協議 'SomeObjCProtocol'"

有什么解決方案可以擺脫這個錯誤嗎? 我正在使用XCode 7 Beta 4

有兩個問題:

  • Swift 2 將func doSomething() throws映射到 Objective-C 方法- (BOOL) doSomethingAndReturnError: (NSError **)error; ,這與您的協議方法不同。
  • 協議方法必須用@objc屬性標記為“Objective-C 兼容”。

有兩種可能的解決方案:

方案一:將Objective-C協議方法重命名為

@protocol SomeObjCProtocol
- (BOOL) doSomethingAndReturnError: (NSError **)error;
@end

解決方案2:保持Objective-C協議方法不變,並明確指定Swift方法的Objective-C映射:

@objc(doSomethingWithError:) func doSomething() throws {
    // Do stuff
}

遇到該錯誤消息時,問題的一個來源可能是符合 Objetive C 協議的 Swift 類不是從 NSObject 繼承的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM