Xcode 10 FBSDK 'SDKLoggingBehavior - PullRequest
       45

Xcode 10 FBSDK 'SDKLoggingBehavior

0 голосов
/ 06 июня 2018

Я обновился до Xcode 10 и не могу скомпилировать мой код.Я получаю следующую ошибку из Facebook SDK (FacebookCore).

Тип аргумента 'SDKLoggingBehavior?'не соответствует ожидаемому типу 'Sequence'

On line

return Set (поведение)

Я установил последний 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)
      }
    }
}

Ответы [ 8 ]

0 голосов
/ 07 июля 2019

Если вы работаете с 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 голосов
/ 21 октября 2018

Добавление к @ JAL's ответ:

Для меня установка модулей все еще дает мне версию 0.3.0

, изменение PodFile последней версией дает мне последнюю версиюsdk

  pod 'FacebookCore','0.5.0'
  pod 'FacebookLogin','0.5.0'
  pod 'FacebookShare','0.5.0'
0 голосов
/ 24 апреля 2019

enter image description here Я получаю ошибку по следующему коду

 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
        })) ?? []

Исправлена ​​проблема для меня.

0 голосов
/ 11 октября 2018

В 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

надеюсь, это поможет

0 голосов
/ 25 сентября 2018

Просто обновите ваш модуль и он работает нормально для меня

  1. Откройте терминал и установите путь к проекту
  2. 'pod repo update'
  3. Deployment Target 11.0 иливыше
0 голосов
/ 24 сентября 2018

Используйте это вместо

Change flatMap to compactMap
0 голосов
/ 24 сентября 2018
  1. Установите для Deployement Target значение 11,0 (в проекте и подфайле)
  2. Выполните 'обновление репозитория pod'
  3. Обновите ваш подфайл следующим образом:

    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'

0 голосов
/ 07 июня 2018

Это исправлено в последнем выпуске, 0.3.1 (по состоянию на 8 июня 2018 г.).

Старый ответ:

Это исправлено в последнем мастере, но не впоследний тег или выпуск Cocoapod.

Чтобы использовать это, клонируйте код непосредственно из главной ветви в свой проект из Swift SDK repo или измените свой подфайл так, чтобы он указывал на master:

pod 'FacebookCore', :git => 'https://github.com/facebook/facebook-sdk-swift', :branch => 'master'

Пул-запрос, который исправил эту проблему, можно найти здесь .

...