我已更新到Xcode 10并且无法编译我的代码。我从Facebook SDK(FacebookCore)收到以下错误。
参数类型&#SDK; SDKLoggingBehavior?'不符合预期的类型 '序列'
在线
返回设置(行为)
我已经使用cocoapods安装了最新的FBSDK。
我将如何解决这个问题,还是等待来自FB的更新SDK?
extension SDKSettings {
/**
Current logging behaviors of Facebook SDK.
The default enabled behavior is `.DeveloperErrors` only.
*/
public static var enabledLoggingBehaviors: Set<SDKLoggingBehavior> {
get {
let behaviors = FBSDKSettings.loggingBehavior().flatMap { object -> SDKLoggingBehavior? in
if let value = object as? String {
return SDKLoggingBehavior(sdkStringValue: value)
}
return nil
}
return Set(behaviors)
}
set {
let behaviors = newValue.map({ $0.sdkStringValue })
FBSDKSettings.setLoggingBehavior(Set(behaviors))
}
}
/**
Enable a particular Facebook SDK logging behavior.
- parameter behavior: The behavior to enable
*/
public static func enableLoggingBehavior(_ behavior: SDKLoggingBehavior) {
FBSDKSettings.enableLoggingBehavior(behavior.sdkStringValue)
}
/**
Disable a particular Facebook SDK logging behavior.
- parameter behavior: The behavior to disable.
*/
public static func disableLoggingBehavior(_ behavior: SDKLoggingBehavior) {
FBSDKSettings.disableLoggingBehavior(behavior.sdkStringValue)
}
}
}
答案 0 :(得分:14)
最新版本0.3.1(截至2018年6月8日)已修复此问题。
旧答案:
这已在最新的主数据中修复,但不在最新的标记或Cocoapod版本中修复。
要使用此功能,请将代码直接从主分支克隆到Swift SDK repo的项目中,或将您的podfile更改为指向master:
pod 'FacebookCore', :git => 'https://github.com/facebook/facebook-sdk-swift', :branch => 'master'
可以找到解决此问题的提款请求here。
答案 1 :(得分:10)
添加到 @JAL的答案:
对我来说,安装Pod仍会为我提供0.3.0
版
用最新的版本号修改PodFile
给我最新的SDK
pod 'FacebookCore','0.5.0'
pod 'FacebookLogin','0.5.0'
pod 'FacebookShare','0.5.0'
答案 2 :(得分:3)
按如下所示更新您的Podfile:
pod'FacebookCore',:git =>'https://github.com/facebook/facebook-sdk-swift',:branch =>'master'
pod'FacebookLogin',:git =>'https://github.com/facebook/facebook-sdk-swift',:branch =>'master'
pod'FacebookShare',:git =>'https://github.com/facebook/facebook-sdk-swift',:branch =>'master'
答案 3 :(得分:1)
{id: "53", description: "here is a <a href = '#/detail/'>Link</a> to something", additional: ["2.jpg", "3.jpg" ]}
答案 4 :(得分:1)
在xcode 10中。 这对我有用。
1. change the iOS version 11.0
2. for swift 4.2 replace flatMap() to compactMap()
3. delete the derived data of project.
4. clean and run the project on simulator
Change flatMap to compactMap
希望有帮助
答案 5 :(得分:0)
只需更新您的吊舱及其对我的正常运行
答案 6 :(得分:0)
get {
let createBehavior = { (object: AnyHashable) -> SDKLoggingBehavior? in
if let value = object as? String {
return SDKLoggingBehavior(sdkStringValue: value)
}
return nil
}
#if swift(>=4.1)
//line of error
let behaviors: [SDKLoggingBehavior] = FBSDKSettings.loggingBehaviors.compactMap(createBehavior)
#endif
#else
let behaviors: [SDKLoggingBehavior] = FBSDKSettings.loggingBehaviors.flatMap(createBehavior)
#endif
我将代码更改为
let behaviors: [SDKLoggingBehavior] = (FBSDKSettings.loggingBehaviors?.compactMap({ (object) -> SDKLoggingBehavior? in
if let value = object as? String {
return SDKLoggingBehavior(sdkStringValue: value)
}
return nil
})) ?? []
为我解决的问题。
答案 7 :(得分:0)
如果要在Swift 4.2上使用Xcode 10,请确保同时使用
pod 'FacebookLogin', '0.5.0'
pod 'FacebookCore', '0.5.0'
如果您仅使用
pod 'FacebookLogin', '0.5.0'
它将自动安装不支持的FacebookCore-> 0.6.0。