web-dev-qa-db-de.com

Xcode 10 FBSDK 'SDKLoggingBehavior

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)
      }
    }
}
13
MattBlack

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.

13
JAL

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'
7
Zaid Mirza
  1. Festlegen des Bereitstellungsziels auf 11.0 (In Projekt und in Pod-Datei)
  2. Pod-Repo-Update durchführen
  3. 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'

3
n.by.n

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

1
Abuzar Manzoor

Verwenden Sie stattdessen diese

Change flatMap to compactMap
1
MUHAMMAD HASSAN

Aktualisieren Sie einfach Ihren Pod und es funktioniert gut für mich

  1. Terminal öffnen und Projektpfad einstellen
  2. "Pod Repo-Update"
  3. Bereitstellungsziel 11.0 oder höher
0
Sahidul Islam

enter image description here 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.

0
Pramod More

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.

0
Akila Wasala