Swift 类型的值没有在第一个和目标控制器中定义的成员

Swift 类型的值没有在第一个和目标控制器中定义的成员,swift,floating-point,mkmapview,segue,viewcontroller,Swift,Floating Point,Mkmapview,Segue,Viewcontroller,我有两个浮点数要在prepareForSegue函数中发送到目标控制器。我在两个变量中都设置了变量,但我遇到了上述错误 if segue.identifier == "secondmapsegue" { let destination = segue.destination as! MapsView let indexPath = tableView.indexPathForSelectedRow var lat: Float

我有两个浮点数要在prepareForSegue函数中发送到目标控制器。我在两个变量中都设置了变量,但我遇到了上述错误

 if segue.identifier == "secondmapsegue"
    {
        let destination = segue.destination as! MapsView
       let indexPath = tableView.indexPathForSelectedRow

        var lat: Float
        var long: Float

        if index.row == 0 {
            lat = MSULandMarks[(indexPath?.row)!].f1
            long = MSULandMarks[(indexPath?.row)!].f2
        }
        else if index.row == 1 {
            lat = MSUFrats[(indexPath?.row)!].f1
            long = MSUFrats[(indexPath?.row)!].f2
        }
        else
        {
            lat = MSUSoro[(indexPath?.row)!].f1
            long = MSUSoro[(indexPath?.row)!].f2
  }
          destination.latitude = lat
           destination.longitude = long
        }

 override func viewDidLoad() {
    super.viewDidLoad()
   var latitude: Float
    var longitude: Float
更新1: 下面选择的解决方案就是解决方案!我这边的一点困惑是Xcode建议在我的目的地控制器中向纬度和经度添加初始值,如下所示

 var latitude: Float = 0.0
 var longitude: Float = 0.0

不要烦恼,只是接受建议,继续你的项目。假设你的水平和长度。有值时,0.0值将替换为实际值。

我假设以下代码段来自目标控制器
MapsView

override func viewDidLoad() {
   super.viewDidLoad()
   var latitude: Float
   var longitude: Float
}
您需要在
viewDidLoad
函数之外声明变量,如下所示:

var latitude: Float
var longitude: Float

override func viewDidLoad() {
   super.viewDidLoad()

}

这就是解决办法,谢谢!我会补充一点,关于我最初尝试时的轻微混乱。太好了!很高兴为您提供帮助。仅供参考:如果您不想给变量一个初始值,您可以使用optional。这也是一个有效的建议,谢谢,Stud。