2012-04-02 32 views
9

Tôi đặt giá trị BOOL trong NSUserDefaults như sau.Làm cách nào để kiểm tra xem BOOL có tồn tại trong NSUserDefaults cài đặt người dùng không?

[userDefaults setBool:NO forKey:@"theKeyOfMyBOOL"]; 

Một nơi khác trong mã của tôi, tôi muốn thực hiện một số hành động nếu khóa "theKeyOfMyBOOL" không được đặt trong NSUserDefaults. Làm cách nào để xác minh xem khóa này đã được đặt? Nếu tôi làm

[userDefaults boolForKey:@"theKeyOfMyBOOL"]; 

thì giá trị trả về có thể là con số không, mà là false Tôi tin rằng, hoặc giá trị thực tế của BOOL NO, mà giá trị false.

Tuy nhiên, tôi cần phân biệt giữa hai giá trị này (cũng như CÓ tất nhiên). Làm thế nào để tôi làm điều đó một cách đáng tin cậy?

+0

bản sao có thể có của [iPhone - Cách phát hiện nếu một khóa tồn tại trong NSUserDefaults standardUserDefaults] (http://stackoverflow.com/questions/5397364/iphone-how-to-detect-if-a-key-exists-in -nsuserdefaults-standarduserdefaults) –

Trả lời

43

[userDefaults boolForKey:@"theKeyOfMyBOOL"]; trả về BOOL, vì vậy, YES hoặc NO (không phải nil).

Nội bộ, được lưu trữ dưới dạng NSNumber. Vì vậy, nếu bạn gọi

[userDefaults objectForKey:@"theKeyOfMyBOOL"]; 

bạn sẽ được cung cấp một NSNumber, nếu bạn đã từng lưu trữ bất cứ điều gì, hoặc nil, nếu bạn chưa có.

Các vấn đề liên quan