Swift 类型的值没有在第一个和目标控制器中定义的成员
我有两个浮点数要在prepareForSegue函数中发送到目标控制器。我在两个变量中都设置了变量,但我遇到了上述错误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
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。