У меня есть случай, когда я хочу иметь возможность установить значение какого-либо свойства объекта через другой класс.Однако:
- Я не знаю / не хочу жестко задавать, какое свойство устанавливается,
- и не знаю / не хочу жестко закодировать новое значение свойства
Пока у меня есть класс ValueSetterClass
:
class ValueSetterClass<V, T>: NSObject where V: NSObject {
var item: T?
private var object: V
private var key: String
init(object: V, value: (HELP ME!)) {
self.object = object
self.key = #keyPath(value)
super.init()
}
public func setValue() {
object.setValue(item!, forKey: key)
}
}
, где вы можете инициализировать класс изменяемым объектом и свойством, которое должно быть нацелено.Предполагается, что он будет вызываться так:
let view = UIView()
let valueSetter = ValueSetterClass<UIView, UIColor>(object: view, value: UIView.backgroundColor)
valueSetter.item = .yellow
valueSetter.setValue()
Однако я не могу понять, что мне следует поместить для типа value
в инициализаторе (где я сказал HELP ME!
☹️)
Я знаю, что это должно работать, так как вы можете определить ключевую строку любого свойства:
print(#keyPath(UIView.backgroundColor)) // backgroundColor
Заранее спасибо за помощь!
PS Я не сумасшедший, у меня естьвеская причина для желания сделать это!?