我有一个带有以下实现的@objc
协议:
@objc public protocol Document: class {
var data: Data? { get }
var image: UIImage? { get }
func generatePreview()
}
我想在一个
[Document: Int]
字典中使用它,但是自然会出现以下错误:问题是我不知道如何使其符合类型'Document'不符合协议'Hashable'
Hashable
,因为它是一个@objc
协议,而Hashable
只适用于Swift。如果我尝试让它符合Hashable
,则会出现以下错误: 这个协议被用作@objc协议'Document'无法优化非@objc协议'Hashable'
@objc
方法中的属性,我希望保持此方法作为@objc
方法,因为它是@objc
委托协议的一部分。这个协议长这样:@objc public protocol MyClassDelegate: class {
@objc func methodOne(parameter: [Document: Int])
}
有什么想法吗?
@objc
的目的是什么? - Ahmad F@objc
方法中的参数。 - kikettas@objc
方法,您可以使用NSDictionary
。 - user28434'mstep@objc
,而在于协议和 Hashable。 - Rob Napier@objc
,而是协议和 Hashable。我猜现在还没有一个“好”的解决方案,或者至少 Swift 还没有为此做好准备。我会再考虑一下,并重新评估Document
类是否应该成为协议。感谢 @RobNapier! - kikettas