2016-07-05 18 views
5

Sto tentando di salvare il valore chiave in NSUserDefaults ma non è stato salvato. Ecco il mio codice:Swift: non salva i valori NSUserDefaults.standardUserDefaults

func saveData() { 

    let userDefaults = NSUserDefaults.standardUserDefaults() 
    userDefaults.setObject("blablabla", forKey:"data") 
    userDefaults.synchronize() 
} 

Qualcuno di voi sa perché questo dato non è stato salvato?

Apprezzerò molto il vostro aiuto.

+2

Come fai a sapere che non sta salvando quei valori ad esempio "blablabla"? –

+0

Quando provo a caricare il valore "userDefaults.dictionaryForKey (" data ")" è sempre nil – user2924482

+0

'blablabla' non è apparentemente un dizionario. ;) – vadian

risposta

5

2.x Swift:

Secondo fonti con Apple:

public func objectForKey(defaultName: String) -> AnyObject? 

per recuperare il valore che si potrebbe usare:

if let value = userDefaults.objectForKey("data") { 
    // do whatever you want with your value 
    // P.S. value could be numeric,string,.. 
} 
+2

Apple non consiglia di utilizzare 'valueForKey' in' NSUserDefaults'. È 'objectForKey'. – vadian

+0

Ho nelle mie app pubbliche senza problemi, dove lo leggi, viene da fonti, puoi descriverne il motivo? –

+0

'valueForKey' è un metodo KVC con un comportamento speciale. Non usarlo a meno che tu non abbia davvero bisogno di KVC. Per favore pubblica un * source * dove Apple usa 'valueForKey' in' NSUserDefaults'. – vadian

4

Penso che si sta facendo male, provare in questo modo:

let userDefaults = NSUserDefaults.standardUserDefaults() 
userDefaults.setObject("blablabla", forKey:"data") 



let defaults = NSUserDefaults.standardUserDefaults() 
if let name = defaults.stringForKey("data") { 
    print(name) 
} 

Lei non sarà in grado di accedere a una stringa con dictionaryForKey perché stringa non è un tipo di valore dizionario. Fammi sapere se hai bisogno di ulteriore aiuto.

2

Non sarà possibile accedere a una stringa con "dictionaryForKey" perché una stringa non è un tipo di valore di dizionario. Avrete bisogno di usare:

if let savedString = userDefaults.stringForKey("data") { 
    print(savedString) 
} 

Se avete ulteriori domande non esitate a farmi sapere :)

Problemi correlati