ios - 使用 FBSDKApplicationDelegate 时对成员 'subscript' 的引用不明确

标签 ios swift swift3

我更新了 swift 3,发现了很多错误。这是其中之一:

Ambiguous reference to member 'subscript'

对于以下行

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool {
        FBSDKApplicationDelegate.sharedInstance().application(app, open: url, sourceApplication: options["UIApplicationOpenURLOptionsSourceApplicationKey"] as? String, annotation: options["UIApplicationOpenURLOptionsAnnotationKey"] as? String)

        return true
    }

我不知道为什么我会得到这个,有其他人知道吗?

它在以前的版本 7.3.1 swift 2 中运行良好。

最佳答案

options 字典的类型已从 [String: AnyObject] 更改为 [UIApplicationOpenURLOptionsKey : Any] 这意味着您应该使用下标UIApplicationOpenURLOptionsKey 而不是像您现在所做的那样 String

试试这个:

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
    guard let sourceApplication = options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String,
        let annotation = options[UIApplicationOpenURLOptionsKey.annotation] else {
            return false
    }

    return FBSDKApplicationDelegate.sharedInstance().application(app, open: url,
                                                                 sourceApplication: sourceApplication,
                                                                 annotation: annotation)

}

此代码从 options 中提取您要查找的键,并将它们传递给 FBSDKApplicationDelegate。请注意使用 UIApplicationOpenURLOptionsKey.sourceApplicationUIApplicationOpenURLOptionsKey.annotation 来访问选项字典中的值。

关于ios - 使用 FBSDKApplicationDelegate 时对成员 'subscript' 的引用不明确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39506798/

相关文章:

swift - 如何使用核心数据保存在写板下方(用于签名)

swift3 - 通过 cocoapods 安装领域时出错

iphone - 删除动画完成后更新 TableView

javascript - parse.coms javascript 库是否迭代 NSArray

javascript - AngularJS 谷歌地图点击事件不会在 ios 设备 ipad 和 iphone 中触发

swift - 在新的 collectionViewCell 中加载 selectedIndexItem(使 imageCache 无效)

ios - 从旧 Swift 到 Swift 3

ios - 我怎样才能让自动刷新 View 工作?

ios - UITableview 更新单个单元格

iOS - HTTP 方法不发出 POST 请求而是发出 GET