Ich habe auf Xcode 10 aktualisiert und kann meinen Code nicht kompilieren. Ich erhalte folgende Fehlermeldung vom Facebook SDK (FacebookCore).
Argumenttyp 'SDKLoggingBehavior?' entspricht nicht dem erwarteten Typ 'Sequenz'
Online
return Set (Verhalten)
Ich habe die neueste FBSDK mit Cocoapods installiert.
Wie gehe ich vor, um dieses Problem zu lösen, oder ist es ein Fall des Wartens auf ein aktualisiertes SDK von FB?
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)
}
}
}
Dies ist in der neuesten Version 0.3.1 (Stand 8. Juni 2018) festgelegt.
Alte Antwort:
Dies ist im neuesten Master behoben, jedoch nicht im neuesten Tag oder in der Cocoapod-Version.
Um dies zu verwenden, klonen Sie den Code direkt aus dem Master-Zweig in Ihr Projekt aus dem Swift-SDK-Repo oder ändern Sie Ihre Pod-Datei in Master.
pod 'FacebookCore', :git => 'https://github.com/facebook/facebook-sdk-Swift', :branch => 'master'
Die Pull-Anforderung, die dieses Problem behoben hat, ist hier zu finden.
Hinzufügen zu @ JALs answer:
Für mich die Installation von Pods, die mir immer noch Version 0.3.0
geben.
PodFile
mit der neuesten Versionsnummer zu ändern, gibt mir die neueste SDK
pod 'FacebookCore','0.5.0'
pod 'FacebookLogin','0.5.0'
pod 'FacebookShare','0.5.0'
Aktualisieren Sie Ihre Poddatei wie folgt:
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 'Facebook',: git => ' https://github.com/facebook/facebook-sdk-Swift ',: branch => 'master'
In xcode 10 ... Das funktioniert für mich.
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
hoffe seine hilfe
Change flatMap to compactMap
Aktualisieren Sie einfach Ihren Pod und es funktioniert gut für mich
Bei folgendem Code ist ein Fehler aufgetreten
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
Ich habe den Code in geändert
let behaviors: [SDKLoggingBehavior] = (FBSDKSettings.loggingBehaviors?.compactMap({ (object) -> SDKLoggingBehavior? in
if let value = object as? String {
return SDKLoggingBehavior(sdkStringValue: value)
}
return nil
})) ?? []
Problem für mich behoben.
Wenn Sie mit Xcode 10 mit Swift 4.2 arbeiten, stellen Sie sicher, dass Sie beide verwenden
pod 'FacebookLogin', '0.5.0'
pod 'FacebookCore', '0.5.0'
wenn du nur verwendest
pod 'FacebookLogin', '0.5.0'
Es wird automatisch FacebookCore -> 0.6.0 installiert, was nicht unterstützt wird.