2

我正在尝试将 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 可以为零,我得到:

致命错误:在展开可选值时意外发现 nil

如果我检查零,我得到:

NSInternalInconsistencyException', reason: '你必须通过调用来初始化 PFFacebookUtils +initializeFacebookWithApplicationLaunchOptions

知道如何解决吗?

4

3 回答 3

6

这是 ParseSDK 中的一个错误。在 Parse 修复此问题之前,您可以更改 PFFacebookUtils.h 头文件中的初始化函数声明

1) 转到 PFFacebookUtils.h

2)改变:

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

至:

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

该答案由 Kiarash Akhlaghi 在https://developers.facebook.com/bugs/1462780714012820/提供

于 2015-04-20T19:12:11.810 回答
2

问题是 ParseSDK 的一个错误,它不接受 nil launchOptions

根据 Roger Ingouacka 在 https://developers.facebook.com/bugs/1462780714012820/提供的答案

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

注意使用

[NSObject:AnyObject]()

于 2015-04-23T23:38:32.100 回答
0

这个问题一直存在,直到我更新到 Parse library 1.8.1

我尝试调整 PFFacebookUtils.h 和很多其他的东西,但这并没有解决它。它快把我逼疯了。

于 2015-08-26T14:14:53.547 回答