2015-04-04 8 views
6

Hier in diesem Änderungsprotokoll (facebook change-log) heißt es, dass es keine Notwendigkeit für objective-c Bridging Header für Swift gibt.Facebook SDK 4.0.1 Schnelle Fehler xcode 6.2 iOS 8.2

Aber wenn ich import FBSDKCoreKit in AppDelegate.swift diese Fehler auftreten:

FBSDKAppLinkResolver.h

/Users/[username]/Documents/FacebookSDK/FBSDKCoreKit.framework/ Headers/FBSDKAppLinkResolver.h: 21: 9: Include eines nicht-modularen Headers innerhalb des Framework-Moduls 'FBSDKCoreKit.FBSDKAppLinkResolver'

AppDelegate.swift

/Users/ashrafkholeif/Projects/xcode/TabbedApplicationTemplate/TabbedApplicationTemplate/TabbedApplicationTemplate/AppDelegate.swift:10:8: konnte nicht Objective-C-Modul 'FBSDKCoreKit' bauen

edit: ich habe sogar die erlauben nicht-modularen Header innerhalb Rahmenmodule JA.

Antwort

7

Ich hatte genau das gleiche Problem, die Lösung vorgeschlagen https://stackoverflow.com/a/29457503/425682 für ein Objective-C-Projekt arbeitete sofort auf meinem Swift-Projekt:

Schreiben Sie eine neue Datei in den Facebook SDK-Ordner unter Bolts.framework/Module/Modul.modulemap mit folgendem Inhalt:

framework module Bolts { 
umbrella header "Bolts.h" 

export * 
module * { export * } 


explicit module BFAppLinkResolver { 
    header "BFAppLinkResolver.h" 
    link "BFAppLinkResolver" 
    export * 
}} 

Dies funktioniert ohne Header Bridging (nicht mehr benötigt in Version 4.0.1 des SDK, wie durch die OP erwähnt), und ohne Änderungen an den Build-Einstellungen.

EDIT: diese bug ist jetzt ab Version 4.1 des Facebook SDK behoben, die Bibliothek funktioniert, ohne irgendwelche Änderungen vornehmen zu müssen.

+0

Das ist großartig! Die beste Lösung bisher :) Das Löschen von Modulen schien klobig zu sein, und das Durcheinander mit den Optionen des Klangs funktionierte nicht. –

1

Erstellen Sie einen neuen Header-Datei und importieren Sie alle Objective-C-Code Sie verwenden, so etwas wie dieses ..

#ifndef RJv1_RJBridge_h 
#define RJv1_RJBridge_h 
#import "NSMutableString+Obfuscated.h" 
#import <FBSDKCoreKit/FBSDKCoreKit.h> 
#import <FBSDKLoginKit/FBSDKLoginKit.h> 
#endif 

dann auf Ihre Build-Einstellungen gehen, suchen Sie nach Install Objective-C Compability Header, und stellen Sie sicher, wird auf Yes Fügen Sie dann einen relativen Pfad zu Ihrer Headerdatei in dem Feld Objective-C Bridging Header hinzu.

Ich hoffe, es funktioniert!

+0

versucht, dass das erste, was. Es hat nicht funktioniert. –

2

Dies ist ein Fehler, und Facebook ordnet dies derzeit dem entsprechenden Team zu.

Um Updates zu diesem Thema folgen Sie diesem Link:

https://developers.facebook.com/bugs/362995353893156/

und traf abonnieren.

Hoffentlich dauert es nicht zu lange zu beheben.

Auch hier ist eine ähnliche Frage vor kurzem auf SO posted:

issue using FBSDK in swift iOS application

Und einige Leute haben Erfolg mit den Antworten gefunden auf diesem Link (keine hat für mich gearbeitet):

Facebook iOS8 SDK build module error for FBSDKCoreKit