如何解决致命错误:意外发现nil,同时隐式展开Optional值

时间:2019-05-02 21:49:00

标签: ios swift iphone uitableview

我是Swift的新手!有人可以帮我解决这个错误!?

我的目标:

我想使用单元格进行表格查看,如果我点击一个单元格,则应该更详细地显示该单元格。 (某些变量和方法用荷兰语表示)

终端错误

enter image description here

发生的错误

enter image description here

这是我的视图控制器

import UIKit
import CoreLocation
import MapKit

class ViewController: UIViewController, MKMapViewDelegate, CLLocationManagerDelegate {

    var dataVanPersoon = Persoon()

    var locatieManager = CLLocationManager()

    @IBOutlet weak var profielFoto: UIImageView!
    @IBOutlet weak var lblNaam: UILabel!
    @IBOutlet weak var lblAdres: UILabel!
    @IBOutlet weak var mapView: MKMapView!
    @IBOutlet weak var lblTelefoonNummer: UILabel!
    @IBOutlet weak var lblGemeente: UILabel!


    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        locatieManager.requestAlwaysAuthorization()
        locatieManager.startUpdatingLocation()


        self.profielFoto.image = dataVanPersoon.image

        self.lblNaam.text = dataVanPersoon.voornaam! + " " + dataVanPersoon.naam!

        self.lblTelefoonNummer.text = dataVanPersoon.telefoon!

        self.lblAdres.text = dataVanPersoon.adres.straat! + " " + String(describing: dataVanPersoon.adres.huisnummer)


        self.lblGemeente.text = String(describing: dataVanPersoon.adres.postcode!) + " " + dataVanPersoon.adres.gemeente!

    }
}

TableViewcontroller

import UIKit

class TableViewController: UITableViewController {

    var personen = [Persoon] ()

    override func viewDidLoad() {
        super.viewDidLoad()

        for persoon in SingletonVanPersoon.shared.returnPersonen(){
            personen.append(persoon)
        }

        // Uncomment the following line to preserve selection between presentations
        // self.clearsSelectionOnViewWillAppear = false

        // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
        // self.navigationItem.rightBarButtonItem = self.editButtonItem
    }

    // MARK: - Table view data source

    override func numberOfSections(in tableView: UITableView) -> Int {
        // #warning Incomplete implementation, return the number of sections
        return 1
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        // #warning Incomplete implementation, return the number of rows
        return personen.count
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let persoon = personen[indexPath.row]

        let cell = tableView.dequeueReusableCell(withIdentifier: "Cellperson", for: indexPath)


        cell.textLabel?.text = persoon.voornaam
        cell.detailTextLabel?.text = persoon.naam
        cell.imageView?.image = persoon.image

        return cell

    }

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "toDetails"{
            if let nextVC = segue.destination as? ViewController{
                let indexPath = self.tableView.indexPathForSelectedRow
                nextVC.dataVanPersoon = personen[(indexPath?.row)!]
            }
        }

    }

我在“人物”中的单身人士

import Foundation
import UIKit
import MapKit

class SingletonVanPersoon{

    static let shared = SingletonVanPersoon()

    let adres1 = Locaties(Straat: "Diestsestraat", Huisnummer: 23, Postcode: 3000, Gemeente: "Leuven")

    let adres2 = Locaties(Straat: "Bontgenotenlaan", Huisnummer: 44, Postcode: 3000, Gemeente: "Leuven")

    let adres3 = Locaties(Straat: "Stationstraat ", Huisnummer: 324, Postcode: 3070, Gemeente: "Kortenberg")

    let adres4 = Locaties(Straat: "Burgemeesterstraat", Huisnummer: 18, Postcode: 3000, Gemeente: "Leuven")


    let coordinatesAdres2 = CLLocationCoordinate2D(latitude: 50.87984386, longitude: 4.70654357)
    let coordinatesAdres1 = CLLocationCoordinate2D(latitude: 50.88131078, longitude: 4.70919665)
    let coordinatesAdres3 = CLLocationCoordinate2D(latitude: 50.8884809, longitude: 4.5440286)

    let coordinatesAdres4 = CLLocationCoordinate2D(latitude: 50.87542824, longitude: 4.71074274)

    func returnPersonen() -> [Persoon]{
        let personen = [Persoon(Naam: "Em", Voornaam: "Med", Telefoon: "049849384", Image: UIImage(named: "med")!, Adres: adres1, Coordinaat: coordinatesAdres1), Persoon(Naam: "Zaniyar", Voornaam: "Diyar", Telefoon: "03822393", Image: UIImage(named: "diyar")!, Adres: adres2, Coordinaat: coordinatesAdres2), Persoon(Naam: "Seyitxan", Voornaam: "Bahoz", Telefoon: "230329", Image: UIImage(named: "seyitxan")!, Adres: adres3, Coordinaat: coordinatesAdres3), Persoon(Naam: "Sadi", Voornaam: "Rashid", Telefoon: "03342334", Image: UIImage(named: "sadi")!, Adres: adres4, Coordinaat: coordinatesAdres4)]
            return personen
    }



}

TableviewCell

import UIKit

class TableViewCell: UITableViewCell {

    @IBOutlet weak var profielView: UIImageView!


    @IBOutlet weak var lblVoornaam: UILabel!

    @IBOutlet weak var lblAchternaam: UILabel!
}



人员班



import Foundation
import MapKit
import UIKit

class Persoon: NSObject {



        // Do any additional setup after loading the view.

        var naam : String?
        var voornaam : String?
        var telefoon:String?
        var image:UIImage
        var adres : Locaties
        var coordinaat : CLLocationCoordinate2D

        override init() {
            naam = ""
            voornaam = ""
            telefoon = ""
            image = UIImage()
            adres = Locaties()
            coordinaat = CLLocationCoordinate2D()
        }


        init(Naam:String, Voornaam:String, Telefoon:String, Image:UIImage, Adres:Locaties, Coordinaat:CLLocationCoordinate2D) {
            naam = Naam
            voornaam = Voornaam
            telefoon = Telefoon
            image = Image
            adres = Adres
            coordinaat = Coordinaat
        }

    }


0 个答案:

没有答案