У меня есть класс Objective-C (который является кнопкой, но это не важно), а в другой части моего (смешанного языка) проекта у меня есть массив этих кнопок, и я хотел бы получить указатель кнопки с использованием метода find()
. Как так:Как сделать класс Objective-C совместимым с Swift `Equatable`?
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
. Но это уродливо. И расстраивает.
Если мой ответ вас не удовлетворяет, тогда единственный ответ - «Это невозможно». Вы не можете сделать класс Objective-C соответствующим протоколу Swift, если протокол не будет аннотирован как '@ objc', или если вы сделаете это с конца Swift. «Equatable» не аннотируется как таковой, и он не может иметь смысла, чтобы он был так аннотирован. – nhgrif