我是新來的ios dev,我正在嘗試開發我的第一個應用程序! :) 到目前爲止這麼好... 現在我試圖將數據從主控制器傳遞到項目詳細信息視圖。Swift 3從主控制器到Firebase和Segue的視圖控制器的數據
我似乎無法找出什麼我做錯了,但我不斷收到一個錯誤: 「致命錯誤:意外發現零而展開的可選值」
現在我明白該值不分配,但我不明白爲什麼 ...這裏是我的代碼:
-------> MainVC
struct Ananlysys {
var descrizione: String!
var data: String!
var immagine: String!
var seganle: String!
var oraUpload: String!
var valuta: String!
}
var analysisList = [Ananlysys]()
var alertsRef = FIRDatabase.database().reference().child("analisi")
override func viewDidLoad() {
super.viewDidLoad()
fetchDataFromDB()
}
func fetchDataFromDB(){
alertsRef.observe(.childAdded, with: { snapshot in
if let dict = snapshot.value as? [String: AnyObject] {
let descrizione = dict["descrizione"] as! String
let data = dict["data"] as! String
let stato = dict["stato"] as! String
let immagine = dict["imageURL"] as! String
let seganle = dict["segnale"] as! String
let oraUpload = dict["oraupload"] as! String
let valuta = dict["valuta"] as! String
self.analysisList.insert(Ananlysys(descrizione: descrizione,
data:data, immagine:immagine, seganle: seganle, oraUpload: oraUpload,
valuta: valuta), at: 0)
self.tableView.reloadData()
}
})
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "ItemDetailVC"{
if let indexPath = self.tableView.indexPathForSelectedRow {
let destination = segue.destination as! ItemDetailVC
let cell = tableView.cellForRow(at: indexPath) as? ItemCell
destination.valuta = (cell?.valutaLabel.text)!
destination.segnale = (cell?.signalLabel.text)!
destination.desc = (cell?.descriptionLabel.text)!
destination.immagine = (cell?.imageThumb.image)!
}
}
在我ItemDetailsVC控制器(也就是目標)我剛剛創建的IBOutlet中。這裏的代碼:
class ItemDetailVC: OpenAlertsVC {
@IBOutlet weak var crossLabel: UILabel!
@IBOutlet weak var signalLbl: UILabel!
@IBOutlet weak var imageDetail: UIImageView!
@IBOutlet weak var analysisDesc: UILabel!
var valuta = ""
var segnale = ""
var immagine: UIImage!
var desc = ""
}
override func viewDidLoad() {
super.viewDidLoad()
crossLabel.text = valuta
signalLbl.text = segnale
analysisDesc.text = desc
imageDetail.image = immagine
}
也許我只是做了一些愚蠢的錯誤... :)但它是我的第一個應用程序,我真的不知道怎麼算出這個!
如果有人能幫助,那將是非常感激! :)
謝謝! 乾杯!
更新: 我認爲我的問題是因爲圖像。 我有我從火力retrive這樣的URL:在SEGUE
cell.imageThumb.downloadImageFrom(link: url!, contentMode:
UIViewContentMode.scaleToFill)
我這樣做::
let url = analysisList[indexPath.row].immagine
,然後我下載異步圖像
destination.immagine = (cell?.imageThumb.image)!
並在我的DetailVC中:
var immagine: UIImage!
imageDetail.image = immagine
這是錯誤的屏幕 enter image description here
[查看控制器之間傳遞數據]的可能的複製(HTTPS ://stackoverflow.com/questions/5210535/passing-data-between-view-controllers) – Chris
你可以更具體一點,哪些線是給你的錯誤?如果您不知道,只需在您的代碼中添加一個斷點,然後逐行瀏覽它,直至崩潰。 – Jay
它似乎是我有圖像的問題...我有一個在firebase中的網址,我檢索,但它似乎我不能通過它...它給了我錯誤發現無 – Marco