Swift Transmettre des données de appDelegate à une autre classe
J'ai besoin de passer une variable à partir de l'AppDelegate à une autre classe que j'ai créé pour contenir les variables globales du projet et je ne suis pas en mesure de trouver un moyen de le faire fonctionner.
C'est le code dans l'AppDelegate:
func application(application: UIApplication!, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData!) {
println("Device's token is: \(deviceToken)")
//Global Variables Class Instance
let globals:Globals = Globals()
globals.setDeviceToken("test1") //method1 not working
globals.deviceToken = "test2" //method2 not working
}
C'est ma Classe Globals:
public class Globals {
var deviceToken = String()
init() {
//nothing
}
func setDeviceToken(s:String){
deviceToken = s
}
func getDeviceToken() -> String {
return deviceToken
}
}
Si j'essaie d'imprimer la valeur, à partir d'autres fichiers du projet, je ne suis pas en mesure d'obtenir quoi que ce soit, juste une chaîne vide.
class ViewController: UIViewController {
//Global Variables Class Instance
let globals:Globals = Globals()
override func viewDidLoad() {
println(globals.getDeviceToken()) //return empty string
println(globals.deviceToken) //return empty string
***Mise à JOUR:
Pour ceux qui ont voté en bas de ma question: je vous Remercie beaucoup. Désolé si je ne suis pas un expert de Swift (encore) et désolé si je suis à l'aide de stackoverflow pour demander quelque chose, je ne sais pas!
source d'informationauteur MeV
Vous devez vous connecter pour publier un commentaire.
Il y a plusieurs modèles que vous pouvez utiliser pour obtenir ce que vous voulez
Vous pourriez accéder à l'AppDelegate par le biais de la UIApplication:
Regarder dans les singletons. Une rapide recherche sur google pour "Swift singleton', vous obtiendrez un long chemin. Le premier résultat:
Ensuite utiliser
sharedInstance
pour instancier le singleton n'importe où et accéder aux mêmes variables.La première est rapide et sale, donc pour plus de projets sérieux je recommande le pattern singleton.
Il y a probablement un million de façons de le faire, mais ce devrait vous obtenir a commencé
(Plus à ce lien, qui explore un peu de moyens pour mettre en œuvre les singletons: https://github.com/hpique/SwiftSingleton )
J'ai simplement résolu mon problème en utilisant NSUserDefaults
dans l'AppDelegate:
À partir d'autres classes:
Honnêtement, je ne sais pas si c'est une bonne façon de le faire, mais il travaille
***Mise à JOUR: Pour ceux qui ont voté en bas de ma question: je vous Remercie beaucoup. Désolé si je ne suis pas un expert de Swift (encore) et désolé si je suis à l'aide de stackoverflow pour demander quelque chose, je ne sais pas!