2016-05-27 148 views
0

我有一個包含各種類文件的項目。我有一個條形碼掃描器,我使用的是一個在線源,它在警報控制器中輸出值。我想要做的是獲取條形碼值並將其傳遞迴我的主類,並使用函數解析它並將其顯示在相關標籤中。出於某種原因,如果任何人有任何想法都會很棒,我無法做到這一點。我花了整整一天的時間試圖找出這沒有任何運氣。在swift中傳遞類/視圖控制器之間的let值

/* AVCaptureMetadataOutputObjectsDelegate */ 

func captureOutput(captureOutput: AVCaptureOutput!, didOutputMetadataObjects metadataObjects: [AnyObject]!, fromConnection connection: AVCaptureConnection!) { 

    if alertController != nil { 
     return 
    } 

    if metadataObjects != nil && metadataObjects.count > 0 { 
     if let machineReadableCode = metadataObjects[0] as? AVMetadataMachineReadableCodeObject { 
      // get the barcode string 
      let type = machineReadableCode.type 
      let barcode = machineReadableCode.stringValue 

我需要得到上面的passengerInformation課堂,它會通過submitCodeAuto功能傳遞到寫標籤條形碼讓利值

barcodeScanner類相關章節。

  passengerInformation().self.submitCodeAuto(barcode) 

我在它上面的裂紋這似乎並沒有工作..

  // display the barcode in an alert 
      let title = "Barcode" 
      let message = "Type: \(type)\nBarcode: \(barcode)" 
      displayAlert(title, message: message) 
     } 

    } 
} 

} 

passengerInformation類

@IBOutlet weak var firstNameResponse: UILabel! 
@IBOutlet weak var lastNameResponse: UILabel! 

@IBAction func submitCodeAuto(sender: AnyObject!) { 
    firstNameResponse.text = barcodeProtocol(barcode).firstName 
    lastNameResponse.text = barcodeProtocol(barcode).lastName 
} 

以上的submitCodeAuto功能還可以通過另一個叫函數發送進來的條形碼barcodeProtocol將其格式化爲允許檢索姓名和姓氏。

我目前使用一個按鈕通過barcodeProtocol運行一個文本框值來測試標籤,並在標籤中顯示所有工作。

我也將一個按鈕連接到一個新的視圖控制器與掃描儀類工作正常。顯示相機掃描並顯示值。

但我只是無法加入他們。該應用程序正在返回致命錯誤:意外地發現無解包裝可選值

任何幫助將是非常感謝。

+1

您是否在搜索錯誤消息'致命錯誤:意外地發現零,而解包可選值?你看過Xcode中指出的問題行嗎?你嘗試過哪些調試?在StackOverflow上有很多類似的問題。例如:http://stackoverflow.com/q/32170456/558933 –

回答

1

在你的函數:

@IBAction func submitCodeAuto(sender: AnyObject!) { 
    firstNameResponse.text = barcodeProtocol(barcode).firstName 
    lastNameResponse.text = barcodeProtocol(barcode).lastName 
} 

你從哪兒得到 '條碼'?

嘗試用

@IBAction func submitCodeAuto(sender: AnyObject!) { 
    firstNameResponse.text = barcodeProtocol(sender as! String).firstName 
    lastNameResponse.text = barcodeProtocol(sender as! String).lastName 
} 

我假設你的方法barcodeProtocol發生在任何字符串替換它,並完美地將其解析爲名字和姓氏

-1

你的代碼是千瘡百孔。

您從barcodeScanner代碼創建passengerInformation類的新實例,調用submitCodeAuto()方法,然後忘記新創建的passengerInformation對象。 (大概它是一個視圖控制器。)

創建一個新的視圖控制器,發送消息,然後忘記它沒有任何意義。那什麼都不會做。您可能想要從故事板實例化您的自定義passengerInformation視圖控制器,在視圖控制器中設置barcode字符串屬性,然後使用presentViewController:animated:completion:以模態方式呈現它。在您的passengerInformation視圖控制器的viewWillAppear方法中,您應該使用條形碼屬性,從中提取所需的信息,並將其安裝到文本字段中。

您的submitCodeAuto()方法被聲明爲IBAction,即使您沒有這樣使用它。它取決於您忽略的參數sender,而是使用您不顯示的變量barcode

您的submitCodeAuto()函數可能應該使用String類型的參數barcode,因爲這正是它所做的。

你有幾個班級的名字以小寫字母開頭。類名應以大寫字母開頭。

相關問題