2017-02-03 8 views
0

konnte nicht erhalten den String-Wert in UserDefaults gespeichert bekommenUnable String-Wert von UserDefaults

var videoString = String() 

Im Hinblick tat Last

videoString = "http://site4brandz.com/cphp/26/uploads/oggy.mp4" 
UserDefaults.standard.set(videoString as String, forKey: CurrentURL) 
UserDefaults.standard.synchronize() 
print("\(UserDefaults.standard.object(forKey: CurrentURL))") 

Es ist Druck wie folgt:

Optional(http://site4brandz.com/cphp/26/uploads/oggy.mp4) 

Wenn Ich gehe zurück und überprüfe die gleiche Zeichenfolge wie

if (UserDefaults.standard.value(forKey: CurrentURL) != nil) { 
    print("\(UserDefaults.standard.value(forKey: CurrentURL))") 
    let runningSrtring = UserDefaults.standard.value(forKey: CurrentURL)! 
} 

Aber jetzt druckt es als Optional(4.067826) wo habe ich einen Fehler gemacht?

+1

Ich denke, das Problem ist‚currentURL‘Stellen Sie sicher, ist Wert ist der gleiche, während Sollwert und erhalten den Wert –

+1

Verwenden Sie das Objekt für den Schlüssel und überprüfen Sie den Schlüssel. Ich denke, dass Ihr Schlüssel nicht übereinstimmt. Sie haben die Zeichenfolge mit einem Schlüssel gespeichert und mit einem anderen Schlüssel abgerufen. Testen Sie mit dem Testschlüssel zB "MySavedKey" und lassen Sie es erneut mit "MySavedKey" drucken. – ChanWarde

+0

@ChanWarde Ja, Sie haben Recht Ich habe den Schlüssel geändert und als UserDefaults.standard.string (forKey: CurrentURL) geändert! und es hat funktioniert –

Antwort

4

In swift3

Wie wäre Verwendung UserDefaults.standard.string(forKey: CurrentURL)!

statt UserDefaults.standard.value(forKey: CurrentURL)!

+0

UserDefaults.standard.string (forKey: CurrentURL)! ist das für die Einstellung? oder bekommen ?? –

+0

@MaheshNarla das bekommt Funktion zurückgeben 'String?' Typ – Cruz

+0

Ja, Sie haben Recht und arbeitete für mich –

1

in Swift 2.3

Sie String-Wert einstellen können in UserDefaults

NSUserDefaults.standardUserDefaults().setObject(videoString, forKey: CurrentURL) 

Durch den Wert von

if let string = NSUserDefaults.standardUserDefaults().stringforKey(CurrentURL) { 
} 

In Swift erhalten 3 Sie Wert Zeichenfolge in UserDefaults

UserDefaults.standard.set(videoString, forKey: CurrentURL) 

Durch erhalten den Wert von UserDefaults

if let string = UserDefaults.standard.string(forKey: CurrentURL) { 
} 

Stellen Sie sicher festlegen können Ihre Taste "CurrentURL" hat denselben Wert

+0

Wird es in Swift 3 zu arbeiten ??? –

+0

lassen Sie mich den Code für eine schnelle 3 –

+0

Kasse hinzufügen meine Antwort –

1

Ihre UserDefaults gesetzt Code ändern:

aus:

UserDefaults.standard.set(videoString as String, forKey: CurrentURL) 

zu

if videoString { 
    UserDefaults.standard.set(videoString!, forKey: CurrentURL) 
} 

und die verschiedenen überprüfen!

1

Versuchen Sie es mit swift3:

extension UserDefaults { 

    func setValue(value: String, key: String) { 
     set(value, forKey: key) 
     synchronize() 
    } 

    func getValue(key: String) -> String { 
     return string(forKey: key) 
    } 
} 

Verbrauch:

let videoString: String = "http://site4brandz.com/cphp/26/uploads/oggy.mp4" 

UserDefaults.standard.setValue(value: videoString, key: CurrentURL) 

und überprüfen Sie es:

print(UserDefaults.standard.getValue(key: CurrentURL)) 

Beachten Sie, dass i Schlüssel als String verwende.Ändern Schlüssel ‚s Typ currentURL Typ wie Sie es erwarten (zB: URL Type, ...)