94 votes

Variables de classe pas encore prises en charge

Ce matin, j'ai essayer de nouvelles Swift langue pour iOS/OSX Développement.

Après avoir joué avec aire de jeux et d'essayer quelques truc, je veux l'essayer à fait un exemple d'application avec les comportements réels.

Donc, je commence mon projet avec une vue fractionnée de contrôleur de la vue initiale du contrôleur et il démarre automatiquement à partir de la table de montage séquentiel.

Généralement, une application avec cette INTERFACE utilisateur ont un et un seul split view controller en tant que root, donc je créer une variable statique dans la sous-classe et de le définir lors de la initilization a été fait.

Donc je veux essayer ce comportement avec swift.

J'ai lu le langage de programmation Swift guide sur iBook sur les propriétés de Type (statique et de la classe de mots clés) et d'essayer un morceau de code pour le travail:

import UIKit

class SplitViewController: UISplitViewController {

    class func sharedInstance() -> SplitViewController {
        return SplitViewController.instance
    }

    class let instance: SplitViewController = nil

    init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
        self.initialization()
    }

    init(coder aDecoder: NSCoder!) {
        super.init(coder: aDecoder);
        self.initialization()
    }

    func initialization() {
        SplitViewController.instance = self;
    }
}

mais j'ai compris quand Xcode dire la classe de mot-clé pour les propriétés de type n'était pas encore prise en charge.

error detail in image

Avez-vous une solution pour cela ?

74voto

glessard Points 221

Incorporant un struct peut fonctionner parfaitement pour contourner le problème :

Le SomeClass.workaroundClassVariable calculé propriété type peut servir ensuite comme s’il s’agissait d’une propriété de type stockées.

20voto

Nikolai Ruhe Points 45433

Il semble possible de déclarer des variables dont la durée de stockage statique dans la portée de fichier (comme en C) :

4voto

Gavin Points 114

dispatch_once modèle de singleton dans swift

Semble être la meilleure réponse à ce jour, en évitant l’utilisation d’une variable globale.

4voto

Luc-Olivier Points 172

Une solution assez similaire que var dans la portée du fichier mais plus personnalisable et à proximité de singleton est d’utiliser une structure supportant var statique en tant que propriété de classe

2voto

Vincent Saluzzo Points 289

OK, avec la solution de Nikolai, qui font le travail. Je poste mes changements dans ce fil pour plus d’informations

et par exemple, dans mon appDelegate, je peux accéder à cette méthode statique comme ceci

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X