i wanted to jump over to use Xcode 8 beta and convert my code, but I'm facing some kind of problem here, i am using Google Analytics SDK to send events,and this is how i used to use it in Swift 2.2 :
let tracker = GAI.sharedInstance().defaultTracker
tracker?.set(kGAIScreenName, value: "ViewController")
let builder = GAIDictionaryBuilder.createScreenView()
tracker?.send(builder?.build() as [NSObject:AnyObject])
But now i want to use Swift 3, its telling me :
Cannot convert value of type NSMutableDicationary to type [NSObject : AnyObject] in coercion.
You need to make a variable to hold your NSMutableDictionary
then pass it to send()
method.
let dictionary = (builder?.build())! as NSMutableDictionary
tracker?.send(dictionary as [NSObject: AnyObject]!)
UPDATE: Another clean way to use in Swift 3
guard let tracker = GAI.sharedInstance().defaultTracker else { return }
tracker.set(kGAIScreenName, value: "ViewController")
guard let builder = GAIDictionaryBuilder.createScreenView() else {
return }
tracker.send(builder.build() as [NSObject:AnyObject])
I think this will solve the issue. It is always good to unwrap optionals before use them directly, Otherwise you may regret later.
if let tracker = GAI.sharedInstance().defaultTracker, builder = GAIDictionaryBuilder.createScreenView()
{
if let dict = builder.build(), mutableDict = dict as [NSObject: AnyObject]?
{
tracker.send( mutableDict )
}
}
SWIFT 3
for screen tracking use below code
func trackScreen(screenName:String){
let tracker = GAI.sharedInstance().defaultTracker
tracker?.set(kGAIScreenName, value: screenName)
let builder:NSObject = GAIDictionaryBuilder.createScreenView().build()
tracker?.send(builder as! [NSObject:AnyObject])
}
for event Tracking
func eventTracking(){
let tracker = GAI.sharedInstance().defaultTracker
let builder:NSObject = GAIDictionaryBuilder.createEvent(
withCategory:"categoryName",
action:"ok button Clicked",
label:"button name",
value:nil).build()
tracker?.send(builder as! [NSObject:AnyObject])
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.