Ich habe zwei Klassen erstellt Content
und Bucket
. Bucket
enthält ein Array von Content
Objekten und macht dies über eine öffentliche Eigenschaft verfügbar. Wenn ich dies tue, erhalte ich jedoch die folgende Fehlermeldung:
Die Eigenschaft kann nicht als öffentlich deklariert werden, da ihr Typ einen internen Typ verwendet
Irgendwelche Gedanken darüber, warum dies einen Fehler auslöst?
public(Array<NSObject>) let contents: Array<Content>
Antworten:
Sie müssen auch die Zugriffsebene der
Content
Klasse public deklarieren .Wie in der Dokumentation angegeben :
Klassen sind
internal
standardmäßig deklariert , daher müssen Sie daspublic
Schlüsselwort hinzufügen , um sie öffentlich zu machen.Eine ähnliche Regel gibt es auch für Funktionen.
quelle
Content
muss auch als öffentlich deklariert werden:Abhängig von Ihrem Anwendungsfall können Sie dies auch
Bucket
als intern deklarieren . Lassen Siepublic
in diesem Fall einfach das Schlüsselwort weg.quelle
Mein Problem war ein Namespace-Problem.
Ich hatte eine Aufzählung mit dem Namen deklariert
Data
, die mit der Swift-Data
Klasse zu tun hatte , insbesondere mit einerimageData: Data
Eigenschaft innerhalb eines Core-Data-Modells.quelle