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 и многое другое, но это не помогло. Это сводило меня с ума.