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

Другие вопросы по тегам