advertencias amarillas: la conversión condicional de UITextDocumentProxy a UIKeyInput siempre tiene éxito

Estoy trabajando en un keyboard, solo tengo instalado xcode 7 beta 2 y luego recibo muchas advertencias.

Más de 24 errores amarillos Creo que hace que el keyboard falle en xcode 6.4 Sin errores y sin keyboard Curso

Encuentro dificultad para resolver los errores.

Advertencias:

La conversión condicional de UITextDocumentProxy a UIKeyInput siempre tiene éxito

func handleBtnPress(sender: UIButton) { if let kbd = self.keyboard { if let textDocumentProxy = kbd.textDocumentProxy as? UIKeyInput { textDocumentProxy.insertText(sender.titleLabel!.text!) } kbd.hideLongPress() if kbd.shiftState == ShiftState.Enabled { kbd.shiftState = ShiftState.Disabled } kbd.setCapsIfNeeded() } } 

Advertencias:

El reparto condicional de UITouch a UITouch siempre tiene éxito.

 override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) { for obj in touches { if let touch = obj as? UITouch { let view = self.touchToView[touch] let touchPosition = touch.locationInView(self) if self.bounds.contains(touchPosition) { self.handleControl(view, controlEvent: .TouchUpInside) } else { self.handleControl(view, controlEvent: .TouchCancel) } self.touchToView[touch] = nil } } } 

Estos no son errores, solo son advertencias y probablemente no sean la causa de sus fallas, sin embargo, puede resolver estos dos ejemplos haciendo lo siguiente:

El protocolo UITextDocumentProxy ajusta a UIKeyInput todas forms, por lo que no es necesario emitir kbd.textDocumentProxy como UIKeyInput .

Podrá hacer lo siguiente sin ninguna advertencia:

 func handleBtnPress(sender: UIButton) { if let kbd = self.keyboard { kbd.textDocumentProxy.insertText(sender.titleLabel!.text!) kbd.hideLongPress() if kbd.shiftState == ShiftState.Enabled { kbd.shiftState = ShiftState.Disabled } kbd.setCapsIfNeeded() } } 

Lo mismo con obj , el comstackdor ya sabe que es un object UITouch así que no hay necesidad de UITouch , puedes sacar todo el código de if let touch = obj as? UITouch Declaración de if let touch = obj as? UITouch así:

 override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) { for touch in touches { let view = self.touchToView[touch] let touchPosition = touch.locationInView(self) if self.bounds.contains(touchPosition) { self.handleControl(view, controlEvent: .TouchUpInside) } else { self.handleControl(view, controlEvent: .TouchCancel) } self.touchToView[touch] = nil } } 

Pequeño consejo: click una variable para ver qué tipo se ha resuelto como:

introduzca la descripción de la imagen aquí