2015-11-06 4 views
25

Ich möchte google Analytics ios in mein Projekt einfügen, habe aber einige Probleme, wenn ich den Code in meine einfügen wollte App wie der Code unten.Der Wert des Typs 'NSMutableDictionary' kann nicht in den Wert 'NSObject: AnyObject' umgewandelt werden.

var tracker = GAI.sharedInstance().defaultTracker 
tracker.set(kGAIScreenName, value: "rootPlayView") 

var builder = GAIDictionaryBuilder.createScreenView() 
tracker.send(builder.build() as [NSObject : AnyObject]) 

Dann bekam ich einen Fehler wie dieser

enter image description here

, wie ich dieses Problem beheben?

Danke!

Antwort

45

Typ converson

enter image description here

swift3

Schirm Spur

let tracker = GAI.sharedInstance().defaultTracker 
tracker.set(kGAIScreenName, value: "Home") 
tracker.send(GAIDictionaryBuilder.createScreenView().build() as [AnyHashable : Any]) 

Objective-C

id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker]; 
// Set the screen name on the tracker so that it is used in all hits sent from this screen. 
[tracker set:kGAIScreenName value:@"Home"]; 
[tracker send:[[GAIDictionaryBuilder createScreenView] build]]; 

Automatische Bildschirm-Tracking

swift3

override func viewDidAppear(_ animated: Bool) { 
super.viewDidAppear(animated) 
self!.screenName = "About Screen" 
} 

Objective-C

- (void)viewDidAppear:(BOOL)animated { 
[super viewDidAppear:animated]; 
    self.screenName = @"About Screen"; 
} 

Ereignis verfolgen

swift3

let tracker = GAI.sharedInstance().defaultTracker 
tracker!.send(GAIDictionaryBuilder.createEventWithCategory("ui_action", action: "button_press", label: "menuButton", play: nil).build()) 

Objective-C

id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker]; 

[tracker send:[[GAIDictionaryBuilder createEventWithCategory:@"ui_action"  // Event category (required) 
                action:@"button_press" // Event action (required) 
                label:@"play"   
                value:nil] build]]; 

oder

weak var tracker = GAI.sharedInstance().defaultTracker 
// Set screen name on the tracker to be sent with all hits. 
tracker!.set(kGAIScreenName, value: "Home Screen") 
// Send a screen view for "Home Screen". 
// [tracker send:[[GAIDictionaryBuilder createAppView] build]]; 

// Previous V3 SDK versions. 
tracker!.send(GAIDictionaryBuilder.createScreenView().build()) 

// SDK Version 3.08 and up. 
// This event will also be sent with &cd=Home%20Screen. 
tracker!.send(GAIDictionaryBuilder.createEventWithCategory("UX", action: "touch", label: "menuButton", value: nil).build()) 
// Clear the screen name field when we're done. 
tracker!.set(kGAIScreenName, value: nil) 

verwenden für Weitere Informationen this

Beispiel

versuchen, diese

var builder = GAIDictionaryBuilder.createScreenView().build() as! [NSObject : AnyObject] 
tracker.send(builder) 

für Bildschirm Spur

let tracker = GAI.sharedInstance().defaultTracker 
tracker.set(kGAIDescription, value: "rootPlayView") 
let builder: NSObject = GAIDictionaryBuilder.createScreenView().build() 
tracker.send(builder as! [NSObject : AnyObject]) 

für Event Spur sehen

let tracker = GAI.sharedInstance().defaultTracker 
let builder: NSObject = GAIDictionaryBuilder.createEventWithCategory(
      "xxxx", 
      action: "buttonclicked", 
      label: "you pressed xxx button", 
      value: nil).build() 
tracker.send(builder as! [NSObject : AnyObject]) 
+0

eine Idee auf swift 3? –

+0

@ JoãoNunes - überprüfen Sie die aktualisierte Antwort –

+1

Tracker in diesem Fall ist optional und erfordert Auspacken. Dieser arbeitete für mich. 'wenn wir Tracker = GAI.sharedInstance() {defaultTracker tracker.set (kGAIDescription, Wert: "rootPlayView") let Bauer:. NSObject = GAIDictionaryBuilder.createScreenView() bauen() Tracker. senden (Builder als! [NSObject: AnyObject]) } ' –

27

Diese Antwort für Swift 3

let tracker = GAI.sharedInstance().defaultTracker 
let eventTracker: NSObject = GAIDictionaryBuilder.createEvent( 
       withCategory: "SomeCategory", 
       action: "SomeAction", 
       label: "SomeLabel", 
       value: nil).build() 
tracker.send(eventTracker as [NSObject : AnyObject]!) 

aktualisiert wurde oder ...

let tracker = GAI.sharedInstance().defaultTracker 
tracker.set(kGAIDescription, value: "ScreenViewName") 
let eventTracker: NSObject = GAIDictionaryBuilder.createScreenView().build() 
tracker.send(eventTracker as! [NSObject : AnyObject]) 
+0

Es ging höllisch aus haben viele Wege ausprobiert, Ihre Antwort hilft mir sehr in Swift danke für das Teilen. – Kashif

0

Klein, in auf die erstaunlichen Antworten folgen swift 3 ist das Verfahren

let builder:NSObject = GAIDictionaryBuilder.createEvent(withCategory: category, action: eventName, label: label, value: nil).build() 
8

Für GA 3.17.0 Verwendung:

let tracker = GAI.sharedInstance().defaultTracker 
let builder = GAIDictionaryBuilder.createEvent(withCategory: category, 
                action: action, 
                 label: nil, 
                 value: nil).build() 
tracker?.send(builder as [NSObject : AnyObject]!) 

Notiere die ! am Ende [NSObject: AnyObject]!.