2015-07-23 23 views
7

W mojej aplikacji, mam zapisywania klucza przy użyciu tego kodu:Sprawdź, czy klucz NSUserDefaults istnieje

func saveKey(){ 
     var xmineSpillere = mineSpillere 
     var defaults = NSUserDefaults.standardUserDefaults() 
     defaults.setObject(xmineSpillere, forKey: "YourKey") 
    } 

Ale jak mogę sprawdzić, czy klucz istnieje? Chcę kodu na coś takiego:

if key("YourKey") exists { 
    println("key exists") 
} 
else { 
    println("does not exist") 
} 

Jak można zrobić coś takiego w Swift?

Odpowiedz

6

Okazało się sam, kod:

if (NSUserDefaults.standardUserDefaults().objectForKey("YourKey") != nil) { 
      println("key exist") 
     } 
18

Przede wszystkim każdej chwili zapisać dowolny do NSUserDefaults trzeba wywołać metodę synchronize() do zapisuje żadnych zmian do trwałych domen na dysku i aktualizacjach wszystkie niemodyfikowane uporczywe domenach do tego, co jest na dysku.

func saveKey(){ 
    var xmineSpillere = mineSpillere 
    var defaults = NSUserDefaults.standardUserDefaults() 
    defaults.setObject(xmineSpillere, forKey: "YourKey") 
    defaults.synchronize() 
} 

Sposób synchronize jest automatycznie wywoływana w regularnych odstępach czasu, należy użyć tej metody tylko wtedy, gdy nie można czekać do automatycznej synchronizacji (na przykład, jeśli aplikacja ma zamiar wyjść) lub jeśli chcesz zaktualizować użytkownik domyślnie wybiera zawartość dysku, nawet jeśli nie wprowadzono żadnych zmian.

Wtedy można osiągnąć żadnej wartości w następujący sposób:

if let key = NSUserDefaults.standardUserDefaults().objectForKey("YourKey"){ 
    // exist 
} 
else { 
    // not exist 
} 

Mam nadzieję, że to pomoże.

+0

Mam pytanie Zwycięzca. "Klucz" Mam zapisuje dane z UITableView, więc jak mogę zapisać go jako tablicę i jak mogę go odczytać jako tablicę? Czytając klucz jako tablicę, chcę umieścić go jako "var mineSpillere". –

+0

Wypróbuj http://stackoverflow.com/questions/25179668/how-to-save-and-read-array-of-array-in-nsuserdefaults-in-swift –

+0

Wartość jest w pamięci i można ją odzyskać, nawet jeśli nie wywołujesz 'synchronizacji'. –

0

Swift 3+

if let key = UserDefaults.standard.object(forKey: "Key"){ 
    // exist 
} else { 
    // not exist 
} 
0

Dodawanie to rozszerzenie do UserDefaults woli pomaga:

extension UserDefaults { 
    func contains(key: String) -> Bool { 
     return UserDefaults.standard.object(forKey: key) != nil 
    } 
} 

Można sprawdzić, czy istnieje klucz z:

if UserDefaults.contains(key: "YourKey") { 
    print("Key exist") 
} else { 
    print("Does not exist") 
} 
Powiązane problemy