Division eine Swift-Anwendung Komponenten in Swift-Module

Schreibe ich eine iOS-Anwendung in Swift, und ich versuche, herauszufinden, wie organisieren Sie das Projekt in separate Module. Ich bin mit einer MVVM-Architektur, und ich möchte das Model, ViewModel und View-Komponenten separate Swift-Module, die machen nur Teilmengen von sich selbst zugänglich zu den Modulen, die diese importieren. Die Dateien in der Ansicht importieren das ViewModel und die Dateien in das ViewModel würde, importieren Sie das Modell. Wie kann ich dies erreichen? Beachten Sie, dass ich nicht versuchen werde, zum erstellen von Bibliotheken, die von mehreren Anwendungen gemeinsam nutzen können. Ich versuche nur, um durchzusetzen, Trennung von Komponenten über Module.

EDIT: Vielleicht ist die Frage, "Welche Methode sollte ich verwenden, um erstellen Module, abgesehen von der, die kommt mit der ersten iOS-Anwendung-Projekt?".

Eine der Antworten, die in "Wie verwenden Sie Namespaces in Swift?" https://stackoverflow.com/a/24032860/215400 sagt, "Klassen (etc) sind implizit Gültigkeitsbereich durch das Modul (Xcode target) Sie sind in." Aus, dass, könnte man schlussfolgern, dass die Ziele entsprechen Module und die Antwort ist, erstellen Sie separate Ziele in ein Xcode-Projekt, aber ich habe versucht, die früheren, und tskulbru ist zu sagen, dass ich mehrere Xcode-Projekte.

Bezüglich mehrerer Xcode-Projekte, die Datei - > Neue > Projekte > iOS-Framework & Library > Cocoa Touch Framework option nicht richtig, weil es eigentlich für Dinge verwenden, UIKit, und zwei der Module, die ich erstellen möchten, sollte nicht davon abhängen, UIKit. Die anderen "Rahmen & Library" - option, Cocoa Touch static library, eine option nicht mit Swift.

Anderen StackOverflow-post erwähnt, die private Kapseln. Nachdem er eine Stunde arbeiten, habe ich festgestellt, dass es nicht die richtige Lösung ist, weil ich nicht haben sollte, um diese zu Bearbeiten-Module in verschiedenen Arbeitsbereichen.

  • Mögliche Duplikate von Wie benutzt man Namespaces in Swift?
  • Warum nicht die private qualifier durchsetzen Kapselung?
  • aber die Dinge privat zu den Dateien, die Sie definiert ist nicht, was ich will. Die öffentlichen und internen Zugriff, die Module (developer.apple.com/library/ios/documentation/Swift/Conceptual/...) ist genau das, was ich will.
  • Der name "Cocoa Touch Framework" ist irreführend, und wohl ausgewählt von Apple für die Marktfähigkeit Gründen. Wirklich, es sollte aufgerufen werden, ein "Darwin-Framework" oder ähnlich. Was für ein "Cocoa Touch Framework" wirklich baut ist ein dynamic shared library verpackt in einem ….framework— es kann davon abhängen, UIKit oder AppKit und Foundation oder CoreFoundation oder andere Frameworks(s) oder gar keine Abhängigkeiten haben (je nur auf std/system C APIs). Zu machen, nicht davon abhängen, UIKit, gehen Sie in die Projekt-Einstellung und ersetzen UIKit.framework im Verlinkten Frameworks mit Foundation.framework.
Schreibe einen Kommentar