gpt4 book ai didi

objective-c - 如何使我的 Objective-C 类符合 Swift 的 `Equatable` 协议(protocol)?

转载 作者:搜寻专家 更新时间:2023-10-31 08:18:51 24 4
gpt4 key购买 nike

我有一个 Objective-C 类(恰好是一个按钮,但这并不重要),在我的(混合语言)项目的另一部分,我有一个这些按钮的数组,我想使用 find() 获取按钮的索引方法。像这样:

func doSomethingWithThisButtonIndex(index:Int)
{
let buttons = [firstButton, secondButton, thirdButton]
if index == find(buttons, firstButton)
{
// we've selected the first button
}
}

但是我得到了

Type 'ImplicitlyUnwrappedOptional' does not conform to protocol equatable

好的,让我们转到 Objective-C 并让 ButtonThing 实现 <Equatable> .但它不承认这一点。

那我该怎么办?现在我正在围绕它构建,强制数组成为 NSArray 并使用 indexOfObject .但这很丑陋。令人沮丧。

最佳答案

首先,在 Swift 中为您的类编写一个自定义的 == 运算符函数。

其次,同样是在 Swift 中,编写一个添加 Equatable 协议(protocol)一致性的类扩展。

也许,例如:

func == (lhs: YourClass, rhs: YourClass) -> Bool {
// whatever logic necessary to determine whether they are equal
return lhs === rhs
}

extension YourClass: Equatable {}

现在您的类符合 Equatable,这是 Swift 特定的。您不能在 Objective-C 端执行此操作,因为您不能为 Objective-C 编写自定义运算符。

关于objective-c - 如何使我的 Objective-C 类符合 Swift 的 `Equatable` 协议(protocol)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30928995/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com