Каков правильный синтаксис для отслеживания исключений Google Analytics в Swift?

Я пытаюсь использовать отслеживание исключений для своего приложения в Google Analytics. https://developers.google.com/analytics/devguides/collection/ios/v3/exceptions

Я просто пытаюсь понять синтаксис для этого в Swift (не очень хорошо знаком с Obj-C):

@try {
    // Request some scores from the network.
    NSArray *highScores = [self getHighScoresFromCloud];
}
@catch (NSException *exception) {
    // May return nil if a tracker has not already been initialized with a
    // property ID.
    id tracker = [[GAI sharedInstance] defaultTracker];
    [tracker send:[[GAIDictionaryBuilder
        createExceptionWithDescription:@"Connection timout %d: %@", connectionError, errorDescription  // Exception description. May be truncated to 100 chars.
    withFatal:@NO] build]];  // isFatal (required). NO indicates non-fatal exception.
}

Я хорошо настроил свой трекер, и он отлично работает, сохраняя другие данные в GA, это просто синтаксис, вызывающий createExceptionWithDescription() в Swift, в котором я не уверен.

Похоже, что примеров/документов по использованию Swift для Google Analytics не так уж и много... =/ Если вы знаете о них, пожалуйста, дайте мне знать!

Спасибо.


person SH10151    schedule 01.03.2016    source источник


Ответы (2)


Я бы предположил, что это что-то вроде:

let dictionaryToSend = GAIDictionaryBuilder.createExceptionWithDescription("Connection timeout \(connectionError): \(errorDescription)", withFatal: NSNumber(bool: false)).build()

Если это функция класса в Obj-C, написанная как

[GAIDictionaryBuilder createExceptionWithDescription:...]; // objc

Это написано как

GAIDictionaryBuilder.createExceptionWithDescription(...); // swift

Каждое двоеточие в obj-c обозначает переменную-аргумент.

// Broken into two lines to make it easier to read
    [GAIDictionaryBuilder createExceptionWithDescription: @"String here"
                          withFatal: @NO]; 

Вы можете сделать то же самое в Swift:

//Comma separated 
    GAIDictionaryBuilder.createExceptionWithDescription("Description String",
                                                        withFatal: NSNumber(bool:false));

Я предлагаю вам немного изучить синтаксис обмена сообщениями ObjC, поскольку большая часть кода iOS все еще находится в ObjC, но не беспокойтесь об этом. Swift - лучший язык.

person David Wong    schedule 01.03.2016

Спасибо, Дэвид Вонг, ваш пост очень помог мне разобраться с синтаксисом.

Этот пост также мне очень помог: введите «NSMutableDictionary», чтобы ввести «[NSObject: AnyObject]» в принуждении для google ios Analytics

Вот что в итоге сработало для меня:

let tracker = GAI.sharedInstance().defaultTracker
let eventTracker: NSObject = GAIDictionaryBuilder.createExceptionWithDescription("No internet connection.", withFatal: false).build()
tracker.send(eventTracker as! [NSObject : AnyObject])

Спасибо еще раз!

person SH10151    schedule 02.03.2016