Xcode 10 FBSDK 'SDKLoggingBehavior

Я обновился до 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)
      }
    }
}
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
15
0
9 462
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

Ответ принят как подходящий

Это исправлено в последней версии 0.3.1 (по состоянию на 8 июня 2018 г.).

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

Это исправлено в последней версии master, но не в последней версии тега или Cocoapod.

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

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

Запрос на вытягивание, устраняющий эту проблему, можно найти в здесь.

установка стручков по-прежнему получает версию 0.3.0

Zaid Mirza 21.10.2018 10:49
  1. Установите цель развертывания на 11.0 (в проекте и подфайле)
  2. Сделайте 'обновление репозитория пода'
  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'

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

Change flatMap to compactMap

К сожалению, для большинства пользователей это не лучший ответ. Очень распространена практика, когда зависимости, установленные через CocoaPods, не проверяются в git, поэтому, хотя это может решить проблему локально, это не решает проблему для других людей, работающих с той же базой кода.

nhgrif 24.09.2018 22:15

Работал у меня. Спасибо!

Vineesh TP 11.11.2018 07:57

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

  1. Откройте терминал и установите путь к проекту
  2. 'обновление репозитория пакетов'
  3. Цель развертывания 11.0 или выше

В 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, нормально работающим с этим модулем.

ittgung 10.04.2019 09:33

Я получал ошибку при следующем коде

 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, который не поддерживается.

Другие вопросы по теме