2015-04-04 7 views
6

Qui in questo registro delle modifiche (facebook change-log) si afferma che non è necessario per le intestazioni di bridging di obiettivo-c per swift.Facebook SDK 4.0.1 Errori rapidi xcode 6.2 iOS 8.2

Ma quando ho import FBSDKCoreKit in AppDelegate.swift questi errori:

FBSDKAppLinkResolver.h

/Users/[username]/Documents/FacebookSDK/FBSDKCoreKit.framework/ Intestazioni/FBSDKAppLinkResolver.h: 21: 9: Includi intestazione non modulare nel modulo quadro 'FBSDKCoreKit.FBSDKAppLinkResolver'

AppDelegate.swift

/Users/ashrafkholeif/Projects/xcode/TabbedApplicationTemplate/TabbedApplicationTemplate/TabbedApplicationTemplate/AppDelegate.swift:10:8: Impossibile costruire Objective-C modulo 'FBSDKCoreKit'

edit: anche impostare l'intestazione consentire non modulare all'interno moduli quadro di SI.

risposta

7

Ho avuto lo stesso identico problema, la soluzione suggerita su https://stackoverflow.com/a/29457503/425682 per un progetto Objective-C ha funzionato subito sul mio progetto Swift:

Scrivi un nuovo file nella cartella Facebook SDK in Bolts.framework/Modules/module.modulemap con il seguente contenuto:

framework module Bolts { 
umbrella header "Bolts.h" 

export * 
module * { export * } 


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

Questo funziona senza il collegamento intestazioni (non più necessaria nella versione 4.0.1 dell'SDK come detto dal PO), e senza modifiche alle impostazioni di generazione.

MODIFICA: questo bug è stato risolto a partire dalla versione 4.1 di Facebook SDK, la libreria funziona senza dover apportare alcuna modifica.

+0

Questo è fantastico! La soluzione migliore fino ad ora :) L'eliminazione dei moduli è sembrata goffo, e le opzioni di clang non funzionavano. –

1

Creare un nuovo file di intestazione e importare qualsiasi codice Objective-C che si sta utilizzando, qualcosa di simile ..

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

Poi vai al tuo impostazioni di generazione, cercare Install Objective-C Compability Header, e assicurarsi che sia impostato su Yes , quindi aggiungi un percorso relativo al file di intestazione nel campo Objective-C Bridging Header.

Spero che funzioni!

+0

Provato che la prima cosa. Non ha funzionato. –

2

Questo è un bug e Facebook sta attualmente "assegnando questo al team appropriato".

Per ottenere aggiornamenti su questo problema Segui questo link:

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

e colpito abbonarsi.

Speriamo che non ci mettano troppo tempo per sistemare.

Anche qui è una questione connessa recentemente pubblicato sul SO:

issue using FBSDK in swift iOS application

e alcune persone hanno trovato il successo con le risposte su questo link (nessuno ha lavorato per me):

Facebook iOS8 SDK build module error for FBSDKCoreKit