Я создаю приложение для камеры, и я пытаюсь разоблачить текущую продолжительность экспозиции для пользователя. Поскольку это значение постоянно изменяется до тех пор, пока не будет установлено вручную, мне нужно использовать kvo для потоковой передачи значений пользователю. Я успешно сделал это с помощью ISO
и могу наблюдать за изменениями в exposureDuration
, но не могу принудить новое значение к объекту CMTime
(который является тем, что является продолжительностью воздействия). Ниже приведен код, я использую, чтобы попытаться выполнить эту:Ключевое значение наблюдения экспозиция Длительность
override init() {
super.init()
captureDevice = self.selectCamera()
captureDevice?.addObserver(self, forKeyPath: "ISO", options: .New, context: &isoContext)
captureDevice?.addObserver(self, forKeyPath: "exposureDuration", options: .New, context: &shutterContext)
}
deinit {
captureDevice?.removeObserver(self, forKeyPath: "ISO")
captureDevice?.removeObserver(self, forKeyPath: "exposureDuration")
}
override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
let newValue = change?[NSKeyValueChangeNewKey]
if context == &isoContext {
store.iso.value = newValue as! Float
} else if context == &shutterContext {
// The app crashes at this line.
// Thread 1: EXC_BREAKPOINT (code=1, subcode=0x100091670)
// newValue is "AnyObject" in the debug area
store.shutterSpeed.value = newValue as! CMTime
}
}
я делаю что-то неправильно, или это законная ошибка, что мне нужно подать с яблоком?
Как вы это сделали для ISO? – Nil
@Nil Вы можете увидеть это в примере, но обычный KVO работает так, как ожидалось. – Mike