¿No se puede convertir el valor del tipo NSMutableDictionary? al tipo de argumento esperado !

Quería saltar para usar Xcode 8 beta y convertir mi código, pero estoy enfrentando algún tipo de problema aquí, estoy usando el SDK de Google Analytics para enviar events, y así es como solía usarlo en Swift 2.2:

let tracker = GAI.shanetworkingInstance().defaultTracker tracker?.set(kGAIScreenName, value: "ViewController") let builder = GAIDictionaryBuilder.createScreenView() tracker?.send(builder?.build() as [NSObject:AnyObject]) 

Pero ahora quiero usar Swift 3, me dice:

No se puede convertir el valor del tipo NSMutableDicationary para escribir [NSObject: AnyObject] en coacción.

NSMutableDictionary crear una variable para contener su NSMutableDictionary luego pasarlo al método send() .

 let dictionary = (builder?.build())! as NSMutableDictionary tracker?.send(dictionary as [NSObject: AnyObject]!) 

ACTUALIZACIÓN: Otra forma limpia de usar en Swift 3

 guard let tracker = GAI.shanetworkingInstance().defaultTracker else { return } tracker.set(kGAIScreenName, value: "ViewController") guard let builder = GAIDictionaryBuilder.createScreenView() else { return } tracker.send(builder.build() as [NSObject:AnyObject]) 

Creo que esto resolverá el problema. Siempre es bueno desenvolver opcionales antes de usarlos directamente, de lo contrario puede arrepentirse más tarde.

  if let tracker = GAI.shanetworkingInstance().defaultTracker, builder = GAIDictionaryBuilder.createScreenView() { if let dict = builder.build(), mutableDict = dict as [NSObject: AnyObject]? { tracker.send( mutableDict ) } } 

SWIFT 3

para el seguimiento de la pantalla, use el siguiente código

  func trackScreen(screenName:String){ let tracker = GAI.shanetworkingInstance().defaultTracker tracker?.set(kGAIScreenName, value: screenName) let builder:NSObject = GAIDictionaryBuilder.createScreenView().build() tracker?.send(builder as! [NSObject:AnyObject]) } 

para seguimiento de events

 func eventTracking(){ let tracker = GAI.shanetworkingInstance().defaultTracker let builder:NSObject = GAIDictionaryBuilder.createEvent( withCategory:"categoryName", action:"ok button Clicked", label:"button name", value:nil).build() tracker?.send(builder as! [NSObject:AnyObject]) }