Когда мы делаем необязательную цепочку, такую как
var myVar: Int?
if let unwrapped = myVar {
}
Компилятор обрабатывает unwrapped
как Int
У меня есть массив классов, которые соответствуют определенному протоколу. Рассмотрим пример:
import Foundation
protocol SomeProtocol: class {}
class A {}
extension A: SomeProtocol {}
class B {}
extension B: SomeProtocol {}
class C {}
extension C: SomeProtocol {}
let arr: [SomeProtocol] = [A(), B(), C()]
arr.forEach{ object in
if object is A {
// object is treated like SomeProtocol, not like A class
}
}
Я могу сделать (object as! A)
, но это выглядит ужасно. Как мне найти способ для умного преобразования элемента протокола в переменную моего класса?