Ich habe einen Result
Typen, den ich in asynchronen Prozessen verwenden:Wie kann ich Swift 4 KVO auf Nicht-Objective-C-Typ anpassen?
internal enum Result<T> {
case success(T)
case failure(Error)
}
Ich habe auch ein APIDataResultContext
, dass ich Daten zwischen Operation
Subklassen passieren verwenden:
internal final class APIDataResultContext: NSObject {
// MARK: Properties
private let lock = NSLock()
private var _result: Result<Data>!
internal var result: Result<Data>! {
get {
lock.lock()
let temp = _result
lock.unlock()
return temp
}
set {
lock.lock()
_result = newValue
lock.unlock()
}
}
}
In meinen Unit-Tests, ich brauche um zu bestimmen, wann result
in eine APIDataResultContext
Instanz gesetzt wurde. Ich kann KVO nicht verwenden, weil mein Result<T>
Typ nicht als dynamic
markiert werden kann, da es in Objective-C nicht dargestellt werden kann.
Ich weiß nicht, auf eine andere Weise, die mir erlauben wird, zu überwachen, wenn result
geändert wird, außer mit einer Verschlusseigenschaft oder Notification
, die ich lieber nicht tun würde. Ich werde jedoch bei Bedarf auf eines der beiden zurückgreifen.
Welche andere (n) Weise (n) kann ich für einen Wechsel von result
überwachen?