2017-07-14 80 views
0

我有下面的代碼,captureOutput函數不會停止運行。由於這個原因,prepare(for segue)函數也沒有被執行。Func不會停止運行

這裏是我的控制檯輸出:

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

你爲什麼編輯這個問題來刪除所有的代碼?這是毫無意義的 – jrturton

+0

@ Annabelle Sykes下面的解決方案是否適合你? –

回答

0

您需要手動停止運行您之前建立的capturesession。一個示例代碼如下所示 -

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) 

      } 

一旦你在任何的if語句中得到的結果,從條形碼掃描,你肯定你的掃描完成後,你將不得不停止捕獲會話。我假設你的metadatobj有一個非零字符串值,然後在示例中停止capturesession。

0

看來你是拍攝一些媒體因此將連續拍攝的數據給你。 一旦元數據未被捕獲,metadataObjects[0]導致崩潰。

檢查metadataObjects.count使用前metadataObjects[0]