Throwing 方法不能是@objc 协议的成员,因为它 returns 类型为 'Bool' 的值

Throwing method cannot be a member of an @objc protocol because it returns a value of type 'Bool'

我收到以下错误:

Throwing method cannot be a member of an @objc protocol because it returns a value of type 'Bool'; return 'Void' or a type that bridges to an Objective-C class

定义Swift协议时也需要桥接到Objective-C:

@objc public protocol Saving {

    func save() throws -> Bool
}

是否有其他方法可以定义 Swift 方法,该方法可以 return Bool,可能引发错误并 Objetive-C 兼容?

如评论中所示,Swift中的以下内容:

func save() throws

将翻译成:

(BOOL)saveAndReturnError:(NSError **)error

在 Objective-C 中。这解释了限制。

我知道在 save() 示例中,return a Bool 和投掷可能没有多大意义,但我不同意关于它没有做出的评论完全没有感觉。可能还有其他有意义的用例。外汇。反例;使用标识符加载 Bool。如果加载失败,加载 Bool 可能 return true/falsethrow,fx。如果在尝试加载时未找到标识符。

然而不幸的是我们不能这样做,因为 Swift 和 Objective-C 是如何桥接的。