2015-07-23 16 views
7

, bu kodu kullanarak bir anahtar tasarruf yaşıyorum varsa:Kontrol NSUserDefaults anahtar Benim uygulamada

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

Ama anahtar olup olmadığını nasıl kontrol edebilirim? Kod şu gibi bir şey istiyorum:

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

Swift'de böyle bir şeyi nasıl yapabilirim? Eğer NSUserDefaults herhangi Biriktireceğin her zaman

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

cevap

6

kendim kod öğrendim diskte ne var.

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

synchronize yöntemi otomatik (Başvurunuz çıkmak üzeredir eğer, örneğin) otomatik senkronizasyon için sabırsızlanıyorum yalnızca bu yöntemi kullanmak, periyodik aralıklarla çağrılan veya güncelleştirmek istiyorsanız Herhangi bir değişiklik yapmamış olsanız bile, kullanıcı varsayılan olarak diskin ne olduğunu gösterir.

Sonra şu şekilde herhangi bir değer ulaşabilir:

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

Ben bu yardımı umut.

18

Önce etmek synchronize() yöntemini çağırmanız gerekir kalıcı diske etki ve güncellemeler tüm değiştirilmemiş kalıcı etki herhangi bir değişiklik yazıyor:

+0

Bir sorum var: anahtar ile varsa

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

kontrol edebilirsiniz Victor. "Anahtar" UITableView'den veri kaydeder, böylece diziyi nasıl kaydedebilirim ve nasıl bir dizi olarak okuyabilirim? Anahtarı dizi olarak okurken, onu "var mineSpillere" olarak koymak istiyorum. –

+0

Bu http://stackoverflow.com/questions/25179668/how-to-save-and-read-array-of-array-in-nsuserdefaults-in-swift'i deneyin –

+0

Değer bellektir ve her ne kadar alınabilirse alınabilir. senkronize etmiyorsun. –

0

Swift 3+

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

ekleme UserDefaults iradesine bu uzantı yardımcı olur:

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