wake-up-neo.com

Kein Zugriff auf Klasse aus benutzerdefiniertem dynamischem Framework (Swift)

Mein dynamisches Test-iOS-Framework XYZFramework besteht aus einer einzigen Klasse XYZ

Allerdings auch nach der Deklaration:

import XYZFramework

Ich kann nicht auf diese Klasse zugreifen, wobei der folgende Fehler angezeigt wird:

Use of unresolved identifier 'XYZ'

Wie löse ich dieses Problem?

34
Vatsal Manot

Die Antwort gefunden Ich musste meiner Klassendeklaration den Modifizierer public voranstellen. Also das:

class XYZ {

}

wurden:

public class XYZ {

}

Und wie immer wurden durch den Papierkorb ~/Library/Developer/Xcode/DerivedData kleinere Komplikationen behoben.

49
Vatsal Manot

Wenn die Klasse Ihres Frameworks auch statische und Instanzelementfunktionen enthielt, müssen Sie weitere public-Schlüsselwörter hinzufügen. 

// set the Framework class to Public
public class FrameworkHello{  

   // set the initializer to public, otherwise you cannot invoke class
   public init() {  

   }

   // set the function to public, as it defaults to internal
   public static func world() {  
       print("hello from a static method")
   }
}

Jetzt können Sie über Ihren Swift-Code oder mit lldb darauf zugreifen:

(lldb) po FrameworkHello.world()
hello from a static method

Dadurch wird sichergestellt, dass die Symbole des Frameworks in einem Release Build verfügbar sind. 

0
rustyMagnet