我有一个segue,它从表视图传递位置数据。我需要在segue完成之后添加一个map注释,但是map是我的初始VC,因此由于缺少数据而导致加载崩溃,因为没有发生segue。
我认为我需要在if语句中包含以下代码(在viewDidLoad中),该语句检查是否已发生segue,或检查是否有可用的数据。
let roomPin = MGLPointAnnotation()
roomPin.coordinate = CLLocationCoordinate2D(latitude: room.latitude, longitude: room.longitude)
mapView.addAnnotation(roomPin)
不完全确定我应该如何检查是否有任何数据可供使用。
编辑:
room是一个加载了alamofire的自定义类
class Room {
var roomNumber : String!
var roomName : String!
var latitude : Double!
var longitude : Double!
init(json : JSON) {
roomNumber = json["room_number"].stringValue
roomName = json["room_name"].stringValue
latitude = json["latitude"].double
longitude = json ["longitude"].double
}
}
然后在tableview中调用以显示名称和编号。按下它时会执行一个segue,将Room对象传递给我的mapVC
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "mapSegue" {
if let destination = segue.destination as? ViewController {
destination.room = sender as! Room
}
}
}
并且在我的地图视图控制器中,我在viewDidLoad中有上面的注释代码,其中空间被声明为:
var room : Room!
感谢任何帮助!
答案 0 :(得分:0)
我想问题出在destination.room = sender as! Room
行,因为sender
类型为UITableViewCell
类,当您尝试将sender
强制转换为Room
对象时输入它崩溃。