Les terrains de jeux Xcode ne peuvent pas accéder aux fichiers rapides dans le dossier Sources

Je viens de passer à Xcode 6.3 et ils ont proposé quelque chose de nouveau aux Playgrounds. Si vous créez un nouveau terrain de jeu et que vous ouvrez le navigateur de projet, vous verrez un dossier Sources et, à l’intérieur, un fichier “SupportCode.swift”. En haut de ce fichier, il lit

Ce fichier (et tous les autres fichiers sources Swift dans le répertoire Sources de ce terrain de jeu) sera précompilé dans un framework automatiquement mis à la disposition de .playground.

J’ai essayé d’y mettre une fonction et celle-ci n’est pas disponible sur mon terrain de jeu. Qu’est-ce que je fais mal? Dois-je comstackr manuellement le fichier SupportCode.swift manuellement? Comment?

Vous devez append un atsortingbut d’access public à vos classes, méthodes et propriétés dans le dossier source pour les rendre accessibles à partir du fichier de terrain de jeu principal car ils sont traités comme un module distinct par le compilateur.

Les terrains de jeux sont parfaits pour exécuter des tests. Mettez tout votre code dans le répertoire Sources et ayez une classe “test” accessible au public pour chaque test. Exécutez ensuite les tests accessibles au public depuis la cour de récréation.

playground

 Test1.run() Testx.run() ... 

Sources/Test1.swift

 public class Test1 { public static func run() { let my_class = MyClass() let result = my_class.do_something() print(result) } } 

Sources/MyClass.swift

 class MyClass { func do_something() -> Ssortingng { return "lol" } } 

Comme mentionné lors de la création de fichiers .swift dans le dossier Source, ils sont automatiquement disponibles pour le code de votre aire de jeux. Pour contrôler l’access à différentes parties de ce fichier, vous pouvez utiliser des modificateurs de niveau d’access qui sont: public , internal et private .

selon le contrôle d’access au langage de programmation Swift

Le niveau d’access par défaut dans la plupart des cas est internal accessible à l’intérieur du module, mais pas à l’extérieur.

En d’autres termes, si vous déclarez une classe sans modificateur d’access, vous pouvez y accéder depuis un autre fichier dans le dossier Source, mais PAS dans le fichier principal de votre aire de jeux. d’autre part, si vous déclarez une classe avec un modificateur public, vous pouvez y accéder dans les deux cas.

pour une utilisation pratique: réalisons une implémentation Singleton Premièrement: je crée un nouveau fichier dans le dossier Source nommé ‘Singy.swift’ avec le code suivant:

 public class Singy{ public var name=""; private static var instance:Singy?; private init(){ } public static func getSingy()->Singy{ if Singy.instance==nil{ Singy.instance=Singy(); } return Singy.instance!; }} 

Deuxièmement: de mon terrain de jeu

 var s1=Singy.getSingy(); var s2=Singy.getSingy(); s1.name="One"; print(s2.name); 

les deux s1 et s2 font référence à la même instance, mais elle a créé uniquement dans la classe