【发布时间】:2015-09-04 21:31:22
【问题描述】:
我有一个 Objective-C 类(恰好是一个按钮,但这并不重要),在我的(混合语言)项目的另一部分,我有一个这些按钮的数组,我想使用find() 方法获取按钮的索引。像这样:
func doSomethingWithThisButtonIndex(index:Int)
{
let buttons = [firstButton, secondButton, thirdButton]
if index == find(buttons, firstButton)
{
// we've selected the first button
}
}
但我得到了
类型 'ImplicitlyUnwrappedOptional' 不符合协议 equatable
好的,让我们使用 Objective-C 并让 ButtonThing 实现 <Equatable>。但它不承认这一点。
那我该怎么办?
现在我正在围绕它进行构建,强制数组成为 NSArray 并使用indexOfObject。但这很丑陋。并且令人沮丧。
【问题讨论】:
-
如果我的回答不能让你满意,那么唯一的答案就是“不可能”。除非协议被注释为
@objc或者您从 Swift 端执行此操作,否则您不能使 Objective-C 类符合 Swift 协议。Equatable没有被这样注释,它不可能被如此注释。
标签: objective-c swift protocols language-interoperability