2014-09-16 5 views
12

Come si importa una classe Swift da un framework?Classe di importazione rapida iOS da swift utilizzando il framework

  1. ho Xcode Workspace
  2. io a creare un framework Cocoa tocco con l'utilizzo di Swift
  3. creo una classe Swift denominata TestClass in quel Cocoa Touch quadro
  4. creo una domanda di schede Base iOS
  5. Importo il mio framework in quell'applicazione iOS a schede usando import FrameWorkTest

L'applicazione pr il compilatore di oject non riesce a trovare TestClass. Come posso importare TestClass per l'uso nell'applicazione principale?

Si dice che TestClass non sia definito. Voglio anche aggiungere un'estensione in FrameWork e quindi usarla.

https://github.com/ArtemKyslicyn/-SwiftImportFrameworkTest

Sto usando questo tutorial http://www.swift-studies.com/blog/2014/6/30/creating-a-pure-swift-framework-for-both-ios-and-mac

Sono su Xcode versione 6.0 seme

Grazie

risposta

3

Ecco una soluzione che ho trovato:

  1. Crea nuovo progetto iOS
  2. Premere sul progetto
  3. Press + per aggiungere bersaglio
  4. Nella finestra visualizzata, scegliere cocoa touch framework
  5. Premere sul project e premere add dependency e add framework
  6. Successo!

screenshot illustrating the success

ho usato la soluzione qui: https://github.com/ArtemKyslicyn/-SwiftImportFrameworkTest nel progetto denominato AddingFrameWork

0

@Artem Kislitsvn: ho visto il repository GitHub,

In cui si ha il file TestClass.Swift fuori dagli obiettivi 'te st 'e' FrameWorkTest '. Quale è fuori dall'ambito degli spazi dei nomi.

In Swift gli spazi dei nomi sono specificati per target. Nel tuo caso "test" e "FrameWorkTest" sono due obiettivi. Se mantieni il tuo file fuori dai target, la tua classe (il file .swift non sarà visibile in qualsiasi momento).

La soluzione è molto semplice. Basta spostare il file TestClass.Swift all'interno di uno qualsiasi dei gruppi di destinazione (trascinare e rilasciare l'Esplora progetti).

In seguito a questo progetto funziona ...!

+0

classe Il mio test è già in target di FrameWorkTest e cartella comune è legata solo di questo file elimino il file in github campione progetto e poi puoi vedere che ho la mia classe di prova nello spazio dei nomi di FrameWorkTest ma nel progetto iOS non posso usare TestClass. Grazie mille per la risposta –

+0

Nome progetto e nome destinazione sono gli stessi per impostazione predefinita. L'obiettivo è all'interno del nome del progetto. Nell'esempio FrameWorkTest -> FrameWorkTest, test (dopo il simbolo -> i due nomi indicano gli obiettivi. Il nome davanti a -> symbol è il nome del progetto). Quello che sto dicendo è spostare il file TestClass.Swift nei target che si trovano all'interno del progetto. Funziona per me. – Suresh

35

rendere la classe nel quadro pubblico. Anche eventuali variabili devono essere pubbliche se si desidera che vengano utilizzate al di fuori del framework.

public class MyClass... { 
... 
} 
+1

Molto facile da dimenticare questo semplice passaggio! Vorrei che ci fosse un errore specifico in XCode che stavi tentando di accedere a una classe o metodo o variabile privata ... –

+0

Questo ha aiutato, grazie! – eagerMoose

0

Per importare una classe Swift da un quadro:

Vai al progetto -> Crea fasi -> Select bersaglio di prova -> Collegamento binario con Biblioteche -> + Button -> Aggiungi altro (sul dialog) -> Seleziona il tuo framework e congratulazioni!

lascio la spiegazione nelle immagini qui sotto:

enter image description here

enter image description here