Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 通过NavigationConrtoller将tableViewCell数据从A->;传递给其子级;至B->&;到C,使用segue Forward_Swift_Xcode_Google Maps_Uitableview - Fatal编程技术网

Swift 通过NavigationConrtoller将tableViewCell数据从A->;传递给其子级;至B->&;到C,使用segue Forward

Swift 通过NavigationConrtoller将tableViewCell数据从A->;传递给其子级;至B->&;到C,使用segue Forward,swift,xcode,google-maps,uitableview,Swift,Xcode,Google Maps,Uitableview,当我从TabeView单元格传递数据时会发生此错误,数据可以在多个NavigationController子项中读取和使用,我已使用segues传递数据,在第二个viewController中成功,当prfomSegue到第三个viewController线程1时,应用程序崩溃:致命错误:在展开可选值时意外发现nil tableViewCell包含以下数据 struct storesData { var area: String var title: String var

当我从TabeView单元格传递数据时会发生此错误,数据可以在多个NavigationController子项中读取和使用,我已使用segues传递数据,在第二个viewController中成功,当prfomSegue到第三个viewController
线程1时,应用程序崩溃:致命错误:在展开可选值时意外发现nil
tableViewCell包含以下数据

struct storesData {
    var area: String
    var title: String
    var latitude: Double
    var longitued: Double

    static func getAllStores()-> [storesData]{
        return [
            storesData(area: "الخرطوم", title: "KFC", latitude: 15.581010, longitued: 32.569032),

        ]
    }
}
这就是我传递数据的方式

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if let destVC = segue.destination as? Order {
        destVC.stores = sender as? storesData
    } else if let destVC = segue.destination as? GoogleMap {
        destVC.stores = sender as? storesData
    }
在第二个视图控制器中,我在一个名为stores的变量中获取storeData的值,导航标题将在customCell中具有标题,它确实工作正常

var stores: storesData?
    override func viewDidLoad() {
            super.viewDidLoad()

            title = stores?.title
    }

这就是错误出现的地方。我抓取的最后一个数据是第三个viewCotroller中类型Double的经度和纬度,以及我使用的带有mapView的视图控制器(谷歌地图)

编译器显示此错误

Fatal error: Unexpectedly found nil while unwrapping an Optional value: file /Users/mazenqp/Downloads/DELEVARE - ديليفري/DELEVARE - ديليفري/UserinterFace/GoogleMap.swift, line 239
2020-06-07 18:17:35.717618+0200 DELEVARE - ديليفري[17147:915821] Fatal error: Unexpectedly found nil while unwrapping an Optional value: file /Users/mazenqp/Downloads/DELEVARE - ديليفري/DELEVARE - ديليفري/UserinterFace/GoogleMap.swift, line 239
(lldb) 

在搜索和搜索之后,我找到了一个答案,它确实涵盖了大多数情况,我只需要将first view控制器中的prepare(for:sender)更改为这样

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        guard let destVc = segue.destination as? Order,
            let index = storesTV.indexPathForSelectedRow?.row
            else{return}
        destVc.stores = stores[index]
    }
数据成功地传递到第二个VC(订单),我在订单VC中编写了另一个prepare(for:sender)

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if let destVc = segue.destination as? GoogleMap{
            destVc.stores = stores
        }
    }
这是一张显示数据被传递到第三个VC(谷歌地图)的图像, 第二个和第三个Vc都来自一个navigationController, 你可以在这篇文章中找到答案

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if let destVc = segue.destination as? GoogleMap{
            destVc.stores = stores
        }
    }