Ответ Shim выше не работает в Swift 4. Есть две вещи, о которых вы должны знать.
Прежде всего, если вы хотите использовать функцию value(forKey:)
, ваш класс должен наследовать NSObject
.
Во-вторых, поскольку Objective-C ничего не знает о типе значения, вы должны поместить ключевое слово @objc
перед вашими свойствами типа значения, а Swift сделает тяжелую работу для вас.
Вот пример:
import Foundation
class Person: NSObject {
@objc var name: String = "John Dow"
@objc var age: Int = 25
@objc var height: Int = 180
subscript(key: String) -> Any? {
return self.value(forKey: key)
}
}
let person: Person = Person()
person["name"] // "John Dow"
person["age"] // 25
person["height"] // 180