2014-09-16 15 views
12

Jak zaimportować klasę Swift z frameworka?Importowanie klas SWIF z SWIFT za pomocą struktury

  1. Mam Xcode Workspace
  2. utworzyć ramy dotykowy kakao przy użyciu Swift
  3. tworzę Swift klasę o nazwie TestClass w tym dotyku kakao ram
  4. utworzyć aplikację kartach Baza iOS
  5. Zaimportuję ramkę w tej aplikacji z kartami iOS z kartami, używając import FrameWorkTest

Aplikacja pr oject kompilator nie może znaleźć TestClass. Jak mogę zaimportować TestClass do użytku w aplikacji głównej?

Mówi, że TestClass nie jest zdefiniowany. Chcę również dodać rozszerzenie w FrameWork i użyć go.

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

Używam tego tutoriala http://www.swift-studies.com/blog/2014/6/30/creating-a-pure-swift-framework-for-both-ios-and-mac

jestem na Xcode wersji 6.0 nasion

Dzięki

Odpowiedz

3

Oto jedno rozwiązanie znalazłem:

  1. Utwórz nowy projekt iOS
  2. Prasa o projekcie
  3. Prasa + do Dodaj cel
  4. W wyświetlonym oknie wybierz cocoa touch framework
  5. Naciśnij na project i naciśnij add dependency i add framework
  6. Sukces!

screenshot illustrating the success

użyłem rozwiązanie tutaj: https://github.com/ArtemKyslicyn/-SwiftImportFrameworkTest w projekcie o nazwie AddingFrameWork

0

@Artem Kislitsvn: Ja widziałem repozytorium GitHub,

W którym plik TestClass.Swift znajduje się poza celami docelowymi st "i" FrameWorkTest ". Które wykracza poza zakres przestrzeni nazw.

W Swift są określane przestrzenie nazw dla celów. W twoim przypadku "test" i "FrameWorkTest" są dwoma celami. Jeśli trzymasz plik poza celami, twoja klasa (plik .swift nie będzie widoczny w żadnym momencie).

Rozwiązanie jest bardzo proste. Wystarczy przenieść plik TestClass.Swift do dowolnej grupy docelowej (Przeciągnij i upuść w Eksploratorze projektów).

W następstwie tego Twój projekt działa ...!

+0

klasa Mój test jest już w cel FrameWorkTest i wspólnego folderu jest związane tylko z tym plikiem usunę ten plik przykładowy github projektu, a następnie widzisz, że mam swoją klasę testową w przestrzeni nazw FrameWorkTest, ale w projekcie iOS nie mogę używać TestClass. Wielkie dzięki za odpowiedź –

+0

Nazwa projektu i nazwa celu są domyślnie takie same. Cel znajduje się wewnątrz nazwy projektu. W twoim przykładzie FrameWorkTest -> FrameWorkTest, test (po symbolu -> dwie nazwy oznaczają cele, a przed znakiem -> nazwa projektu). Mówię tylko, że po prostu przenosisz swój plik TestClass.Swift do celów, które są wewnątrz projektu. To działa dla mnie. – Suresh

35

Bądź klasę w ramowej publiczności. Również wszelkie zmienne muszą być publiczne, jeśli chcesz, aby były używane poza strukturą.

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

Bardzo łatwo zapomnieć o tym prostym kroku! Chciałbym, aby wystąpił określony błąd w XCode, że próbujesz uzyskać dostęp do klasy lub metody lub zmiennej, która była prywatna ... –

+0

To pomogło, dzięki! – eagerMoose

0

Aby zaimportować Swift klasę z ram:

idź do swojego projektu -> Budowanie faz -> Wybierz cel testu -> Link Binary Z Biblioteki -> Przycisk + -> Dodaj inne (na dialog) -> Wybierz swoje ramy i gratulacje!

zostawiam wyjaśnienie na zdjęciach poniżej:

enter image description here

enter image description here