Frage Nicht in der Lage, öffentliche Swift-Klasse durch Framework zugreifen


Project structure

Ich habe ein Projekt erstellt und es in dieses Framework importiert. Wenn ich dieses Framework in eine Demo-App lade, kann ich auf die öffentliche Klasse zugreifen MyTest Innerhalb MyTest.swift Datei, aber nicht auf die öffentliche Klasse zugreifen können MessagesViewController.swift. Fehle ich etwas? Können wir nicht über ein Framework auf Dateien innerhalb eines Projekts zugreifen?


5
2018-05-10 12:38


Ursprung


Antworten:


Umstrukturieren Sie Ihren Projektraum so, dass Ihre Anwendung nicht mehr in Ihrem Framework vorhanden ist, und lösen Sie dann die Verbindungsdateien zwischen der App und dem Framework.

  1. Erstellen Sie eine xcworkspace-Datei, die alle Ihre Unterprojekte enthält. Weitere Informationen finden Sie in der Xcode-Arbeitsbereich Abschnitt in der Xcode-Konzepte Dokument

enter image description here

  1. Öffnen Sie die Arbeitsbereichsdatei und fügen Sie Ihre Framework- und App-Projekte hinzu, indem Sie die xcodeproj-Dateien in das Bedienfeld "Projektnavigation" ziehen. Seien Sie vorsichtig beim Hinzufügen der Dateien als Xcode als eine Tendenz, ein Projekt in ein anderes zu platzieren, das wollen Sie nicht. enter image description here

  2. Erstellen Sie Ihr Framework und verknüpfen Sie es dann mit dem App-Projekt. Dadurch werden alle Framework-Dateien für Ihr App-Projekt verfügbar, solange sie öffentlich sind (weitere Informationen finden Sie weiter unten). Navigieren Sie in der Editoransicht zum FireChat-Swift-App-Projektziel, und öffnen Sie das Produktverzeichnis aus dem Frameworks-Projekt, und ziehen Sie die Framework-Datei in den Bereich Embedded Binaries des allgemeinen Registers.

enter image description here

  1. Jetzt ist Ihr Framework mit Ihrem App-Projekt verknüpft. Sie müssen Ihr Framework in den Quellcode Ihrer App importieren. enter image description here

  2. Fügen Sie Ihrem Framework neue Dateien hinzu und denken Sie daran, dass sie öffentlich sein müssen, wenn Sie sie außerhalb des Frameworks - also Ihrer App - benötigen.


2
2018-05-17 21:13



Hast du hinzugefügt MessagesViewController.swift zum Ziel innerhalb des ursprünglichen Projekts?

Um es zu überprüfen, öffnen Sie einfach das ursprüngliche Projekt, wählen Sie MessagesViewController.swift und werfen Sie einen Blick auf die rechte Seitenleiste (Bereich Zielmitgliedschaft).


2
2018-05-13 20:24



Dies kann auch als Teil eines Fehlers in Xcode auftreten, obwohl ich nicht sicher bin, was dies verursacht - möglicherweise ziehen Sie Dateien aus einem anderen Projekt in Ihre Bibliothek. Ich habe das gerade behoben, indem ich Xcode geschlossen und neu gestartet habe, dann den Build-Ordner gereinigt habe (gedrückt halten) Alt Wählen Sie dann die Option aus Product Speisekarte).


0
2017-07-28 16:05



Ich hatte dieses Problem, und ich reparierte mein, indem ich zu meinem Framework ging und eine Zielmitgliedschaft hinzufügte Tests und UITests:

enter image description here

Seltsame Lösung, aber ich schätze, es funktioniert! ️


0
2017-08-15 08:54