Swift class 不符合 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
class SwiftClass : SomeObjCProtocol
{
func doSomething() throws {
}
}
编译器给我一个 error
Type 'SwiftClass' does not conform to protocol 'SomeObjCProtocol'"
有什么解决办法可以消除这个错误吗?
我正在使用 XCode 7 Beta 4
有两个问题:
- Swift 2 映射
func doSomething() throws
到 Objective-C 方法
- (BOOL) doSomethingAndReturnError: (NSError **)error;
,也就是
与您的协议方法不同。
- 协议方法必须用
@objc
属性标记为 "Objective-C compatible"。
有两种可能的解决方案:
解决方案1:将Objective-C协议方法重命名为
@protocol SomeObjCProtocol
- (BOOL) doSomethingAndReturnError: (NSError **)error;
@end
方案二:
保持 Objective-C 协议方法不变,并为 Swift 方法指定 Objective-C 映射
明确地:
@objc(doSomethingWithError:) func doSomething() throws {
// Do stuff
}
当遇到该错误信息时,问题的来源之一可能是符合 Objetive C 协议的 Swift class 不是从 NSObject 继承的。
我有Objective-C
协议
@protocol SomeObjCProtocol
- (BOOL) doSomethingWithError: (NSError **)error;
@end
和Swift
class
class SwiftClass : SomeObjCProtocol
{
func doSomething() throws {
}
}
编译器给我一个 error
Type 'SwiftClass' does not conform to protocol 'SomeObjCProtocol'"
有什么解决办法可以消除这个错误吗?
我正在使用 XCode 7 Beta 4
有两个问题:
- Swift 2 映射
func doSomething() throws
到 Objective-C 方法- (BOOL) doSomethingAndReturnError: (NSError **)error;
,也就是 与您的协议方法不同。 - 协议方法必须用
@objc
属性标记为 "Objective-C compatible"。
有两种可能的解决方案:
解决方案1:将Objective-C协议方法重命名为
@protocol SomeObjCProtocol
- (BOOL) doSomethingAndReturnError: (NSError **)error;
@end
方案二: 保持 Objective-C 协议方法不变,并为 Swift 方法指定 Objective-C 映射 明确地:
@objc(doSomethingWithError:) func doSomething() throws {
// Do stuff
}
当遇到该错误信息时,问题的来源之一可能是符合 Objetive C 协议的 Swift class 不是从 NSObject 继承的。