2014-06-17 8 views
43

Sto cercando di utilizzare un framework Objective C con il linguaggio di programmazione Swift per lo sviluppo di iOS 8. Questo è un caso specifico di importazione ma il problema generale è:Connetti il ​​framework Objective C all'app Swift iOS 8 (Parse framework)

Come si importa un framework Objective C in rapido e si riconosce l'importazione?

Sto cercando di integrare il framework Parse in un'applicazione rapida utilizzando le beta di iOS 8 e Xcode 6.

Ecco la tecnica per l'integrazione Parse quadro in Objective C:

https://www.parse.com/apps/quickstart#social/mobile/ios/native/existing

Ho scaricato il quadro Parse come un archivio compresso, estratto di esso, e importati in Xcode 6 senza problemi. All'interno della mia applicazione appare come un framework formattato correttamente con il nome Parse.framework.

Il mio attuale pensiero è di modificare il file AppDelegate.swift nella directory principale del mio progetto. Ecco il file corrente senza modifiche (generata automaticamente dal sistema al momento della creazione del progetto Xcode rapida):

https://gist.github.com/fconcklin/e8ef7d8b056105a04161

ho cercato di importare parse aggiungendo la riga import Parse sotto la linea import UIKit. Tuttavia, Xcode segnala che non è stato trovato alcun modulo e che la compilazione fallisce.

Ho anche provato a creare un file ${PROJ_NAME_HERE}-Bridging-Header.h che contiene l'importazione Objective C di Parse utilizzando import <Parse/Parse.h>. Questa linea non genera un errore ma sembra che alla fine non faccia differenza.

Grazie in anticipo. Fatemi sapere se avete bisogno di ulteriori informazioni.

"Fool Proof" modo
+1

è il percorso a colmare intestazione impostare nelle proprietà del progetto? Richiama le proprietà del progetto e cerca "Intestazione Bridging Objective-C" nella sezione "Generatore di codice Swift - Generazione del codice". Il solo fatto di avere un file di intestazione per il bridging non è sufficiente: devi impostarne il percorso nel progetto. –

risposta

42

Una di aggiungere un'intestazione colmare è la seguente:

Se si dispone di un Swift progetto , aggiungere un nuovo Objective-C File al progetto e Xcode chiederà se si vuoi configurare il tuo progetto con un'intestazione di bridging. Premere Sì.

Se si dispone di un progetto diObjective-C, aggiungere un nuovo Swift File ad esso e si otterrà la stessa richiesta. Premere Sì.

Dopo aver ottenuto l'intestazione del bridging, è possibile eliminare il file appena aggiunto, se lo si desidera.

+0

Conciso e corretto. –

+2

Ho un progetto rapido, ma non riesco a visualizzare il messaggio di intestazione di bridging quando aggiungo un file di intestazione ObjC (xcode 6 b4). Qualche idea? – ZuluDeltaNiner

+0

@ZuluDeltaNiner Ho avuto lo stesso problema fino a quando non mi sono reso conto di aver importato un altro framework che già creava una classe di bridging. Potrebbe essere che hai già creato una classe di intestazione di bridging? – Maxwell

61

Dopo ulteriori ricerche ho trovato la soluzione e ho capito che ero solo confuso.

L'approccio corretto è il seguente:

  • importare il proprio framework Objective C trascinando e rilasciando il quadro in un progetto Swift Xcode 6.

  • Creare un nuovo file Objective C nel progetto (File-> Nuovo-> File [Obiettivo C per iOS]).

  • Accettare il prompt (concordare) per creare un file di intestazione di bridging tra Objective C e Swift.

  • Elimina il file Objective C appena creato ma conserva il file di intestazione di bridging ${YOURPROJ}-Bridging-Header.h.

  • Nel file di intestazione Bridging, importare il framework utilizzando il Objective C sintassi di importazione standard (ad esempio #import <Parse/Parse.h>).

  • Questo rinuncia alla necessità di eseguire una dichiarazione import Parse nel file AppDelegate.swift. Ora puoi scrivere il codice che utilizza qualsiasi framework purché sia ​​importato usando l'intestazione del bridging. È disponibile in tutti i file Swift del tuo progetto.

Ora, se si desidera testare l'integrazione Parse nel progetto, è possibile digitare Parse. e utilizzare il completamento del codice per sfogliare il quadro e vedere che il completamento del codice è indicativo di un'importazione di successo.

Tuttavia, vi è un altro avvertimento qui che deve essere risolto quando si utilizza un file di intestazione di Bridging. Tutte le dipendenze del framework devono essere specificate anche nel file Bridging Header. Nel caso di integrazione di framework Parse in un'applicazione di Swift il file di intestazione Bridging sarà simile a questa:

#import <Foundation/Foundation.h> 

// Parse Dependencies 
#import <AudioToolbox/AudioToolbox.h> 
#import <CFNetwork/CFNetwork.h> 
#import <CoreGraphics/CoreGraphics.h> 
#import <CoreLocation/CoreLocation.h> 
#import <MobileCoreServices/MobileCoreServices.h> 
#import <QuartzCore/QuartzCore.h> 
#import <Security/Security.h> 
#import <StoreKit/StoreKit.h> 
#import <SystemConfiguration/SystemConfiguration.h> 

// Import parse framework 
#import <Parse/Parse.h> 

Spero che questo aiuti.

+0

Grazie per l'accuratezza! Ci proverò presto. – LostInTheTrees

+0

Grazie per questa risposta funziona davvero, la cosa è molto difficile capire che non dovrai importare Parse nei tuoi file veloci! –

+0

Quando faccio questo e vado a un altro file Swift, ottengo "SourceKitService Crashed. La funzione Editor temporaneamente limitata" all'infinito finché non rimuovo l'intestazione. – milesper

0

La risposta al mio problema era diversa. Ho avuto i Percorsi di ricerca quadro nelle Impostazioni di creazione del mio progetto impostato su ricorsivo quando avrebbero dovuto essere non ricorsivo.

Nel mio caso, il mio obiettivo ha i percorsi di ricerca quadro impostati su $ (ereditato), che significa ereditare l'impostazione dal mio progetto.

del mio progetto quadro dei percorsi di ricerca solo aveva un percorso, $ project_dir /../ esterno/** (con i due asterischi che significa "cerca questa cartella in modo ricorsivo". La mia Parse.framework file di era situato nel .. il livello di base della cartella esterna

la modifica del percorso da ricorsivo a non ricorsivi cose fissati per me molto strano ...

8

per aggiungere quadro Analizza per il progetto Swift: Aggiungere questo lib Ariete al Progetto Swift.

enter image description here

incollare questo quadro dal ParseSDK al progetto:

enter image description here

Aggiungi un ProjectName-Bridging-header.h (https://developer.apple.com/library/ios/documentation/swift/conceptual/buildingcocoaapps/MixandMatch.html) (https://stackoverflow.com/a/24272431/1847511) file con tali contenuti.

enter image description here

Aggiungi percorso per legare intestazione colmare:

enter image description here

Aggiungere la TestCode:

enter image description here

eseguire l'applicazione.

1

La nuova versione di Parse framework necessita di un aggiornamento.

Come ad esempio è necessario inserire libsqlite3.0.dylib in Biblioteca binari con le librerie e file di intestazione di aggiornamento con # import e #import

-1

'Objective-C colmare intestazione' farà il trucco.

ben descritto in link ("Utilizzando Parse con Swift e Xcode 6")

Problemi correlati