2017-09-12 1 views
0

Je saisis manuellement les données dans une structure. Cependant, la structure ne sauvegarde pas les données. J'ai essayé d'utiliser userdefaults mais cela ne fonctionne pas. Je veux que les données apparaissent sur l'étiquette benCarson à tout moment si c'est dans la structure bad.Utiliser userdefaults sur une struct

ViewController 1

struct bad { 
    static var mm = [String]() 
} 

ViewController 2

class ViewController2: UIViewController { 
    @IBOutlet var benCarson: UILabel! 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     benCarson.text = ViewController.bad.mm.map { " \($0)" }.joined(separator:"\n") 
    } 
} 
+1

Il est convention Swift pour nommer vos structures en commençant par une lettre majuscule –

Répondre

2

Je pense pas besoin de struct il suffit d'utiliser les UserDefaults et il travaillera

Pour Save

let mm = ["adsa", "safds", "twer", "qwer", "dfas"] 
let defaults = UserDefaults.standard 
defaults.set(mm, forKey: "SavedStringArray") 
defaults.synchronize() 

Pour Retrieve

let defaults = UserDefaults.standard 
let myarray = defaults.stringArray(forKey: "SavedStringArray") ?? [String]() 
benCarson.text = myarray.map { " \($0)" }.joined(separator:"\n") 
+1

Pas besoin de forcer la synchronisation –

+1

BTW Swift est un langage de type inféré, il n'y a pas besoin de spécifier le type de tableau lorsque utilisant l'opérateur de coalescence nulle. Passez juste un tableau vide '?? [] ' –