В следующем примере я ожидаю, что x.responds(to: Selector(name))
вернет true. Однако это не так.
x.value(forKeyPath: name)
выдает ошибку signal SIGABRT
.
Тот же код работал в Swift 3.
Мой вопрос: как проверить свойства в классе (который выходит из NSObject) и получить их на основе строки.
import UIKit
class Test: NSObject {
var test = "test"
}
func property(_ object: Any, _ name: String) -> Bool? {
let x = object as? NSObject
// x?.value(forKeyPath: name)
return x?.responds(to: Selector(name))
}
property(Test(), "test")
(код для детской площадки в Swift 4.2)