2017-07-14 4 views
0

Ich habe den folgenden Code, wodurch die captureOutput Funktion wird nicht aufhören zu laufen. Aus diesem Grund wird auch die prepare(for segue) Funktion nicht ausgeführt.Func hört nicht auf zu laufen

Hier ist meine Konsolenausgabe:

2017-07-14 13:15:50.142147 [9101:1993811] [MC] Reading from public effective user settings. 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 fatal error: Index out of range (lldb)

+1

Warum haben Sie die Frage bearbeitet, um den gesamten Code zu entfernen? Es ist jetzt bedeutungslos – jrturton

+0

@ Annabelle Sykes Hat die untenstehende Lösung für Sie funktioniert? –

Antwort

0

Sie müssen die zuvor festgelegte Fangsitzung manuell beenden. Ein Beispielcode ist unten dargestellt -

if metadataObj.stringValue != nil { 

       print(objMetadataMachineReadableCodeObject.stringValue) 
       captureSession?.stopRunning() 
       scannedCode= metadataObj.stringValue 

       // call the below line in the main thread once your background process is done above 
       self.performSegue(withIdentifier: "Seguename", sender: self) 

      } 

Sobald Sie das Ergebnis aus dem Barcode-Scan in einem der if-Anweisungen bekommen haben und Sie sind sicher, dass der Scan abgeschlossen ist, werden Sie die Aufnahmesitzung zu stoppen. Ich habe angenommen, dass Ihr Metadatobj einen Nicht-Null-String-Wert hat und dann im Beispiel die Capturesession gestoppt.

0

es scheint, dass Sie einige Medien erfassen, so dass es kontinuierlich Daten Sie erfassen wird. Sobald die Metadaten nicht erfasst wurden, führt metadataObjects[0] zum Absturz.

überprüfen Sie metadataObjects.count vor der Verwendung metadataObjects[0]!