2015-07-23 18 views
7

Trong ứng dụng của tôi, tôi tiết kiệm một chìa khóa sử dụng mã này:Kiểm tra nếu NSUserDefaults chính tồn tại

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

Nhưng làm thế nào tôi có thể kiểm tra xem phím tồn tại? Tôi muốn mã giống như sau:

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

Tôi có thể làm điều gì đó như thế này trong Swift?

Trả lời

6

Phát hiện ra bản thân mình, mã:

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

Trước hết mỗi khi bạn lưu bất kỳ để NSUserDefaults bạn cần phải gọi phương thức synchronize() để viết bất kỳ sửa đổi các lĩnh vực dai dẳng vào đĩa và cập nhật tất cả các lĩnh vực dai dẳng chưa sửa đổi với những gì trên đĩa.

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

Phương pháp synchronize được tự động gọi trong khoảng thời gian định kỳ, sử dụng phương pháp này chỉ có nếu bạn không thể chờ đợi cho đồng bộ hóa tự động (ví dụ, nếu ứng dụng của bạn là về để thoát) hoặc nếu bạn muốn cập nhật người dùng mặc định là những gì trên đĩa mặc dù bạn chưa thực hiện bất kỳ thay đổi nào.

Sau đó, bạn có thể đạt được bất kỳ giá trị theo cách sau:

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

Tôi hy vọng điều này giúp bạn.

+0

Tôi có một câu hỏi Victor. Các "chìa khóa" tôi đã lưu dữ liệu từ UITableView, vì vậy làm thế nào tôi có thể lưu nó như là mảng, và làm thế nào tôi có thể đọc nó như là một mảng? Khi đọc khóa như mảng, tôi muốn đặt nó như là một "var mineSpillere". –

+0

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

+0

Giá trị này nằm trong bộ nhớ và có thể được truy lục ngay cả khi bạn không gọi là 'đồng bộ hóa'. –

0

Swift 3+

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

Thêm phần mở rộng này để UserDefaults sẽ giúp:

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

Bạn có thể kiểm tra xem chìa khóa của bạn tồn tại với:

if UserDefaults.contains(key: "YourKey") { 
    print("Key exist") 
} else { 
    print("Does not exist") 
} 
Các vấn đề liên quan