Я построил QR-сканер на основе учебника here. Когда приложение запускается, я вижу сканер, и когда он указывается на QR-код, на экране отображается правильный текст. Теперь я хочу иметь кнопку (Продолжить), которая позволит мне перевести текстовое значение, отсканированное (usernameScanned), на следующий контроллер представления. Это не работает, и когда я нажимаю кнопку, приложение вылетает с этой ошибкой:Swift - QR сканер бросает ноль ошибку
fatal error: unexpectedly found nil while unwrapping an Optional value
Это код, у меня есть где хранить текст в переменную usernameScanned:
func captureOutput(captureOutput: AVCaptureOutput!, didOutputMetadataObjects metadataObjects: [AnyObject]!, fromConnection connection: AVCaptureConnection!) {
// Check if the metadataObjects array is not nil and it contains at least one object.
if metadataObjects == nil || metadataObjects.count == 0 {
qrCodeFrameView?.frame = CGRectZero
usernameLabel.text = "No barcode/QR code is detected"
return
}
// Get the metadata object.
let metadataObj = metadataObjects[0] as! AVMetadataMachineReadableCodeObject
// Here we use filter method to check if the type of metadataObj is supported
// Instead of hardcoding the AVMetadataObjectTypeQRCode, we check if the type
// can be found in the array of supported bar codes.
if supportedBarCodes.contains(metadataObj.type) {
// if metadataObj.type == AVMetadataObjectTypeQRCode {
// If the found metadata is equal to the QR code metadata then update the status label's text and set the bounds
let barCodeObject = videoPreviewLayer?.transformedMetadataObjectForMetadataObject(metadataObj)
qrCodeFrameView?.frame = barCodeObject!.bounds
if metadataObj.stringValue != nil {
usernameLabel.text = metadataObj.stringValue
self.usernameScanned = metadataObj.stringValue!
print(self.usernameScanned)
}
}
}
и это кнопка продолжить действие:
@IBAction func proceedPressed(sender: AnyObject)
{
self.performSegueWithIdentifier("viewUserProfileForQR", sender: self)
}
Спасибо за ваш час elp
Установить контрольную точку исключения и показать строку, в которой произошел сбой – Paulw11
проверить, что ваше имя segue в раскадровке является 'viewUserProfileForQR' существуют –
@ Paulw11 это происходит только тогда, когда я нажимаю кнопку и внутри функции, как видно выше, это только один линия. Где бы вы порекомендовали разместить точку останова в этом случае? –