带有 Swift 4/Xcode 10 的 Facebook SDK:参数类型 'SDKLoggingBehavior?' 不符合预期类型 'Sequence'

Facebook SDK with Swift 4/Xcode 10: Argument type 'SDKLoggingBehavior?' does not conform to expected type 'Sequence'

我正在重新访问一个旧项目(使用 Swift 3 构建,现在使用 Swift 4),Facebook SDK 似乎存在一些问题。

我用谷歌搜索了最初的问题并找到了一个解决方案 here 建议添加到我的 pod 文件:

post_install do |installer|
    installer.pods_project.targets.each do |target|
        if ['FacebookCore', 'FacebookLogin'].include? target.name
            target.build_configurations.each do |config|
                config.build_settings['SWIFT_VERSION'] = '3.2'
            end
        end
    end
end

Here is the complete podfile.

pod install和运行项目之后,它似乎清除了我之前的错误,但是我在第151行Pods>Pods>FacebookCore>SDKSettings.swift>enabledLoggingBehaviors中仍然出现一个错误return Set(behaviors)

错误是(pic):

Argument type 'SDKLoggingBehavior?' does not conform to expected type 'Sequence'

我不确定如何处理这个错误,有谁知道如何解决这个问题以使 Facebook SDK 再次工作?

在此先感谢您的帮助!

里面SDKSetting.swift

将您的 enabledLoggingBehaviors 函数替换为

public static var enabledLoggingBehaviors: Set<SDKLoggingBehavior> {
    get {
      let behaviors = FBSDKSettings.loggingBehavior().compactMap { object -> SDKLoggingBehavior? in
        if let value = object as? String {
          return SDKLoggingBehavior(sdkStringValue: value)
        }
        return nil
      }
      return Set(behaviors)
    }
    set {
      let behaviors = newValue.map({ [=10=].sdkStringValue })
      FBSDKSettings.setLoggingBehavior(Set(behaviors))
    }
  }

希望对您有所帮助。

flatMap替换为compactMap即可。