! Теперь все, что осталось, это «плохой разработчик», хахаха. :) Еще раз спасибо!

есть несколько экземпляров пользовательского класса Swift, который наследуется от SKSpriteNode, и мы смогли правильно выполнить следующий код (чрезвычайно упрощенный для этого вопроса):

let instance1 = CustomClass()
let instance2 = CustomClass()
let instance3 = CustomClass()
let instance4 = CustomClass()

let array1 = [instance1, instance2]
let array2 = [instance3, instance4]

func check(testInstance: CustomClass) -> Bool {
   return array1.filter({ $0 == testInstance }).count > 0
}

check(testInstance: instance3)

Другими словами, выполнениеcheck(testInstance: instance3) возвращенныйfalse как и ожидалось.

Тем не менее, мы сделали кучу изменений, иcheck перестал работать.

CustomClass не реализуетEquatable протокол. Мы просто хотим обнаружить уникальные экземпляры.

Это только начало работать, когда мы использовалиObjectIdentifierЭто означает, что функция изменилась на это:

func check(testInstance: CustomClass) -> Bool {
   return array1.filter({ ObjectIdentifier($0) == ObjectIdentifier(testInstance) }).count > 0
}

ПочемуObjectIdentifier необходимо, и когда это должно использоваться для равенства объектов?

Это было написано с Swift 3.

Ответы на вопрос(1)

Ваш ответ на вопрос