PFFacebookUtils.initializeFacebookWithApplicationLaunchOptions(launchOptions), выдающая ошибку компиляции

Я пытаюсь интегрировать вход в Facebook в своем приложении разбора. Я следовал за каждым шагом, упомянутым в уроке разбора. В приведенном ниже коде я получаю ошибку компиляции.

 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    // Override point for customization after application launch.
    line1: Parse.setApplicationId("xxx", clientKey: "yyy")
    line2: PFFacebookUtils.initializeFacebookWithApplicationLaunchOptions(launchOptions)       
    line3: PFAnalytics.trackAppOpenedWithLaunchOptions(launchOptions)
    line4: return true
}

В строке 3 я получаю сообщение об ошибке:

Значение необязательного типа '[NSObject:AnyObject]не распакованный; ты хотел использовать!' или же '?"?

Если я вручную разверну его, используя!', потому что launchOptions может быть ноль, я получаю:

Неустранимая ошибка: неожиданно обнаружен ноль при развертывании необязательного значения

Если я проверю на ноль, я получу:

NSInternalInconsistencyExceptionПричина: "Вы должны инициализировать PFFacebookUtils вызовом +initializeFacebookWithApplicationLaunchOptions

Есть идеи как это исправить?

3 ответа

Решение

Это ошибка в ParseSDK. Пока Parse не исправит это, вы можете изменить объявление функции инициализации в заголовочном файле PFFacebookUtils.h

1) Зайдите в PFFacebookUtils.h

2) изменить:

  • (void) initializeFacebookWithApplicationLaunchOptions: (NSDictionary *) launchOptions;

Для того, чтобы:

  • (void) initializeFacebookWithApplicationLaunchOptions: (PF_NULLABLE NSDictionary *) launchOptions;

Этот ответ был предоставлен Киарашем Ахлаги по адресу https://developers.facebook.com/bugs/1462780714012820/

Проблема заключалась в ошибке ParseSDK, он не принимает nil launchOptions

Согласно ответу, предоставленному Роджером Ингуацкой по адресу https://developers.facebook.com/bugs/1462780714012820/

    if let launchOptions = launchOptions {
        PFFacebookUtils.initializeFacebookWithApplicationLaunchOptions(launchOptions)
    } else {
        PFFacebookUtils.initializeFacebookWithApplicationLaunchOptions([NSObject:AnyObject]())
    }

Обратите внимание на использование

[NSObject:AnyObject]()

Эта проблема сохранялась до тех пор, пока я не обновил библиотеку Parse 1.8.1.

Я пытался настроить PFFacebookUtils.h и многое другое, но это не помогло. Это сводило меня с ума.

Другие вопросы по тегам