2017-01-20 12 views
3

Это следующий код, но я получаю эту ошибку при слежении в swift3Swift 3,0: Неоднозначная ссылка на член выпуска «Индекса» в нажимном уведомлении

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) { 
    notificationReceived(notification: userInfo as [NSObject : AnyObject]) 
} 

func notificationReceived(notification: [NSObject:AnyObject]) { 
     let viewController = window?.rootViewController 
     let view = viewController as? ViewController 
     view?.addNotification(
      title: getAlert(notification: notification).0, 
      body: getAlert(notification: notification).1) 
    } 

    private func getAlert(notification: [NSObject:AnyObject]) -> (String, String) { 
     let aps = notification["aps"] as? NSDictionary 
     let alert = aps?["alert"] as? [String:AnyObject] 
     let title = alert?["title"] as? String 
     let body = alert?["body"] as? String 
     return (title ?? "-", body ?? "-") 
    } 

Но я получаю следующее сообщение об ошибке "Swift 3.0: Неоднозначность ссылка на член выпуска 'Индекса' "на" пусть ApS = уведомление [ "ТД"], как? NSDictionary "

ответ

6

типа Converson

enter image description here

Изменить информацию пользователя из NSDictionary на [String: Any]. и один раз попробовать

let aps = notification["aps"] as? [String : Any] 

или писать, как, как

let aps = notification["aps" as NSString] as? [String:Any] 
3

Строка не конвертируемая в NSObject, просто переименовать все ваши [NSObject:AnyObject] к [String:Any] с Swift 3