Я обновился до Xcode 10 и не могу скомпилировать свой код. Я получаю следующую ошибку из Facebook SDK (FacebookCore).
Argument type 'SDKLoggingBehavior?' does not conform to expected type 'Sequence'
В сети
return Set(behaviors)
Я установил последний FBSDK с помощью cocoapods.
Как мне решить эту проблему, или это случай ожидания обновленного SDK от 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)
}
}
}





Это исправлено в последней версии 0.3.1 (по состоянию на 8 июня 2018 г.).
Старый ответ:
Это исправлено в последней версии master, но не в последней версии тега или Cocoapod.
Чтобы использовать это, клонируйте код прямо из ветки master в свой проект из Репозиторий Swift SDK или измените свой подфайл так, чтобы он указывал на master:
pod 'FacebookCore', :git => 'https://github.com/facebook/facebook-sdk-swift', :branch => 'master'
Запрос на вытягивание, устраняющий эту проблему, можно найти в здесь.
Обновите свой подфайл следующим образом:
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'
Change flatMap to compactMap
К сожалению, для большинства пользователей это не лучший ответ. Очень распространена практика, когда зависимости, установленные через CocoaPods, не проверяются в git, поэтому, хотя это может решить проблему локально, это не решает проблему для других людей, работающих с той же базой кода.
Работал у меня. Спасибо!
Просто обновите свой модуль, и он у меня работает нормально.
В 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
Надеюсь, поможет
Добавление к ответу @ JAL's:
Для меня установка стручков по-прежнему дает мне версию 0.3.0
изменение PodFile с номером последней версии дает мне последний sdk
pod 'FacebookCore','0.5.0'
pod 'FacebookLogin','0.5.0'
pod 'FacebookShare','0.5.0'
Мой Mac середины 2011 года ограничен xCode 10.1, нормально работающим с этим модулем.
Я получал ошибку при следующем коде
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
})) ?? []
Исправленная проблема для меня.
Если вы работаете с Xcode 10 и Swift 4.2, обязательно используйте оба
pod 'FacebookLogin', '0.5.0'
pod 'FacebookCore', '0.5.0'
если вы только используете
pod 'FacebookLogin', '0.5.0'
Он автоматически установит FacebookCore -> 0.6.0, который не поддерживается.
установка стручков по-прежнему получает версию 0.3.0