2017-02-03 1 views
0

Impossible d'obtenir la valeur de chaîne stockée dans UserDefaultsImpossible d'obtenir la valeur chaîne de UserDefaults

var videoString = String() 

En point de vue ne charge

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))") 

Il est l'impression comme suit:

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

Lorsque Je reviens et vérifie la même chaîne comme

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

Mais maintenant c'est l'impression Optional(4.067826) où ai-je fait une erreur?

+1

Je pense que votre problème est « CURRENTURL », assurez-vous est la valeur est la même alors que la valeur de consigne et obtenir la valeur –

+1

Utilisez l'objet pour la clé et vérifiez votre clé, je pense que votre clé ne correspond pas. Vous avez stocké une chaîne avec une clé et obtenir avec une autre clé. Testez avec la clé de test par exemple "MySavedKey" et faites-le imprimer à nouveau avec "MySavedKey". – ChanWarde

+0

@ChanWarde oui vous avez raison j'ai changé la clé et modifié comme UserDefaults.standard.string (forKey: CurrentURL)! et cela a fonctionné –

Répondre

4

Dans swift3

Comment sur l'utilisation UserDefaults.standard.string(forKey: CurrentURL)!

au lieu UserDefaults.standard.value(forKey: CurrentURL)!

+0

UserDefaults.standard.string (forKey: CurrentURL)! est-ce pour le réglage? ou obtenir ?? –

+0

@MaheshNarla qui obtient la fonction renvoyant 'String?' Tapez – Cruz

+0

Oui, vous avez raison et travaillé pour moi –

1

à Swift 2.3

vous pouvez définir la chaîne de valeur dans UserDefaults

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

En obtenir la valeur de

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

Swift 3 vous pouvez définir la chaîne de valeur dans UserDefaults

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

En obtenir la valeur de UserDefaults

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

Assurez-vous que votre la clé "CurrentURL" a la même valeur

+0

Cela fonctionnera-t-il également dans swift 3 ??? –

+0

permettez-moi d'ajouter le code de la caisse rapide 3 –

+0

ma réponse –

1

Changer votre UserDefaults Code lot

de:

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

à

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

et vérifier les différents!

1

Essayez avec swift3:

extension UserDefaults { 

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

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

Utilisation:

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

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

et vérifiez:

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

Notez que j'utilise clé comme String.Changer clé Type de à CURRENTURL type que vous attendez (par exemple: URL Type, ...)