带有 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
在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
即可。
我正在重新访问一个旧项目(使用 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
在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
即可。