openMapsWithItems не может вызвать с проблемой списка аргументов в Swift 2.0
У меня есть несколько проблем с преобразованием моего кода Swift 1.2 в 2.0 - это одна из тех проблем.
У меня есть функция, которая открывает приложение "Карты iOS" для указания маршрута. Это работало нормально до преобразования. Теперь я получаю следующее сообщение об ошибке:
Cannot invoke 'openMapsWithItems' with an argument list of type '([MKMapItem], launchOptions: [NSObject : AnyObject])'
Это мой код (ошибка появляется в последней строке):
func openMapsWithDirections(longitude:Double, latitude:Double, placeName:String){
var coordinate = CLLocationCoordinate2DMake(CLLocationDegrees(longitude), CLLocationDegrees(latitude))
var placemark:MKPlacemark = MKPlacemark(coordinate: coordinate, addressDictionary:nil)
var mapItem:MKMapItem = MKMapItem(placemark: placemark)
mapItem.name = placeName
let launchOptions:NSDictionary = NSDictionary(object: MKLaunchOptionsDirectionsModeDriving, forKey: MKLaunchOptionsDirectionsModeKey)
var currentLocationMapItem:MKMapItem = MKMapItem.mapItemForCurrentLocation()
MKMapItem.openMapsWithItems([currentLocationMapItem, mapItem], launchOptions: launchOptions as [NSObject : AnyObject])
}
Есть идеи? Благодарю.
1 ответ
Как можно видеть в предварительных выпусках ресурсов разработчика для MKMapItem, openMapsWithItems:launchOptions:
Теперь изменилось с [NSObject : AnyObject]!
чтобы взять [String : AnyObject]?
Таким образом, вам придется объявить (или привести) как таковой.
Измени в своем коде строку
let launchOptions:NSDictionary = NSDictionary(object: MKLaunchOptionsDirectionsModeDriving, forKey: MKLaunchOptionsDirectionsModeKey)
в
let launchOptions = [MKLaunchOptionsDirectionsModeKey: MKLaunchOptionsDirectionsModeDriving]
и последняя строка
MKMapItem.openMapsWithItems([currentLocationMapItem, mapItem], launchOptions: launchOptions as [NSObject : AnyObject])
в
MKMapItem.openMapsWithItems([currentLocationMapItem, mapItem], launchOptions: launchOptions)
Это должно работать.
Sidenote: Вы должны изменить свой стиль кода, чтобы разрешить Swift выводить большинство типов. Пожалуйста, перестаньте болеть всем var placemark:MKPlacemark = MKPlacemark(...)
, Также старайтесь избегать NSDictionary
Пожалуйста, используйте Swift's Dictionary