私はios devを初めて使用しています。私は最初のアプリを開発しようとしています! :) これまでのところ良い... 私はメインコントローラからデータをアイテム詳細ビューに渡そうとしています。Swift 3メインコントローラからFirebaseとSegueでコントローラを表示するためのデータ
は、私が間違ってやっているかを把握することができないようだが、私はエラーを取得しておいてください。 「致命的なエラー:オプションの値アンラップしながら、予想外にnilを見つけ、」私は価値があることを理解し、今
を
-------> 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
}
は、おそらく私はいくつかの愚かなエラーをやっている... :)しかし、それは私の最初のアプリだと私は本当にこれを理解する方法がわかりません!
誰かが助けてくれると助かりましたか? :)
ありがとう! 乾杯!
更新日: 私の問題は画像のためだと思います。
destination.immagine = (cell?.imageThumb.image)!
:私はこれを行うセグエで
cell.imageThumb.downloadImageFrom(link: url!, contentMode:
UIViewContentMode.scaleToFill)
:
let url = analysisList[indexPath.row].immagine
をして、私は画像の非同期(async)ダウンロード: 私は私がこのようにfirebaseからretrive URLを持っています私のDetailVCで:
var immagine: UIImage!
imageDetail.image = immagine
これはエラーの画面です enter image description here
に次のビューで、[表示コントローラ間でデータを受け渡す]の可能な複製を受け取る変数を入れていることを確認してください://stackoverflow.com/questions/5210535/passing-data-between-view-controllers) – Chris
エラーが発生している行は何ですか?もしあなたがわからないのであれば、あなたのコードにブレークポイントを追加し、クラッシュするまで一度に1行ずつ進んでください。 – Jay
それは私が画像に問題があるようだ...私は取得するfirebaseのURLを持っているが、私はそれを渡すことができないと思われる...そしてそれは私にエラーが見つからない – Marco