Tôi muốn đặt một số giá trị ban đầu cho các khóa NSUserDefault của mình để lần chạy đầu tiên của ứng dụng có một số cài đặt ban đầu hợp lý. Tôi nghĩ rằng tôi chạy qua một cách đơn giản để làm điều này trong gói ứng dụng .plist, nhưng bây giờ tôi không thể tìm thấy nó. Ý tưởng nào?Cách đặt giá trị ban đầu cho Khóa NSUserDefault?
Trả lời
Bạn nên sử dụng phương pháp registerDefaults
của NSUserDefaults
. Chuẩn bị một tệp plist trong gói của bạn có chứa các tùy chọn mặc định và sau đó sử dụng plist đó để đăng ký các giá trị mặc định.
NSString *defaultPrefsFile = [[NSBundle mainBundle] pathForResource:@"defaultPrefs" ofType:@"plist"];
NSDictionary *defaultPreferences = [NSDictionary dictionaryWithContentsOfFile:defaultPrefsFile];
[[NSUserDefaults standardUserDefaults] registerDefaults:defaultPreferences];
Bạn phải thực thi mã này khi khởi chạy ứng dụng của mình. Nó sẽ thêm các giá trị này vào một tên miền riêng biệt trong hệ thống phân cấp mặc định của người dùng. Bất cứ khi nào giá trị mặc định của người dùng của ứng dụng không cung cấp giá trị cho một khóa nhất định, NSUserDefaults
sẽ quay lại miền này và truy lục giá trị từ đó.
Dường như điều này đăng ký mặc định cho một vị trí bộ nhớ dễ bay hơi. Tôi không muốn nó trở lại mặc định rất thường xuyên. Đây là chủ yếu cho lần ra mắt đầu tiên. Các giá trị do người dùng đặt có được giữ nguyên hay đôi khi chúng sẽ bị ghi đè bởi điều này? – Suz
Bạn có ý nghĩa gì bởi "vị trí bộ nhớ dễ bay hơi"? Bạn phải thực thi mã này trên mỗi lần khởi chạy ứng dụng của mình. Nó sẽ thêm các giá trị này vào một tên miền riêng biệt trong hệ thống phân cấp mặc định của người dùng. Bất cứ khi nào giá trị mặc định của người dùng của ứng dụng không cung cấp giá trị cho một khóa nhất định, 'NSUserDefaults' sẽ quay trở lại miền này và truy lục giá trị từ đó. –
Hướng dẫn lập trình mặc định người dùng liệt kê NSRegistrationDomain là có trạng thái 'dễ bay hơi', trái ngược với 'liên tục'. Vì vậy, bản thân các thiết lập mặc định của người dùng là liên tục và các giá trị mặc định là dễ bay hơi, và phải được tải lại trên mỗi lần khởi chạy ứng dụng. Nó chỉ có vẻ kỳ quặc với tôi rằng giá trị 'giảm trở lại' ít bền vững hơn so với cài đặt người dùng. – Suz
if ([[[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys] containsObject:@"initialValuesHaveBeenWritten"])
{
[[NSUserDefaults standardUserDefaults] setValue:obj1 forKey:key1];
[[NSUserDefaults standardUserDefaults] setValue:obj2 forKey:key2];
[[NSUserDefaults standardUserDefaults] setValue:obj1 forKey:@"initialValuesHaveBeenWritten"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
NB: Không kiểm tra, thực hiện từ bộ nhớ
Đây thực sự không phải là cách chính xác. Công trình, nhưng nó không phải là những gì Apple gợi ý. Sử dụng -registerDefaults như được mô tả trong câu trả lời bởi @ole hoặc thêm trực tiếp vào miền NSRegistrationDomain. –
Tôi đồng ý. Tôi không biết về registerDefaults khi tôi đã viết câu trả lời này nhưng tôi sử dụng nó ngay bây giờ. –
Nếu bạn có nhiều giá trị mặc định, chúng ta hãy sử dụng ola's answer, nếu điều này là tốt cho một vài params
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if (![defaults boolForKey:USERDEFAULT_IS_INITIALIZED]) {
[defaults setBool:YES forKey:USERDEFAULT_IS_INITIALIZED];
// Set initial values
...
[defaults synchronize];
}
-(void) loadDef
{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
_removeAd=[userDefaults boolForKey:SAVE_AD_STATUS];
NSString* strDefSetting=[userDefaults stringForKey:SAVE_STATUS_ADSETTING];
if(strDefSetting==nil
||[strDefSetting isEqualToString:@""]
)
{
[email protected]"0.5";
}
_floatAdmob=strDefSetting.floatValue;//0.5;
}
- 1. Cách đặt giá trị auto_increment ban đầu bằng doctrine2
- 2. empty_form giá trị ban đầu cho một modelformset_factory
- 3. Cách đặt giá trị ban đầu cho thuộc tính kiểm soát người dùng?
- 4. Giá trị ban đầu của một Enum
- 5. Django, ModelChoiceField() và giá trị ban đầu
- 6. xlrd giá trị ban đầu của ô
- 7. Đặt cặp khóa/giá trị
- 8. JQuery: Nhận giá trị nhập ban đầu
- 9. Cách tạo giá trị ban đầu trong modelform
- 10. đặt giá trị gia tăng tự động ban đầu cho bảng mysql
- 11. Tăng nguyên tử Django với giá trị ban đầu
- 12. Làm cách nào tôi có thể đặt giá trị ban đầu của dijit.form.DateTextBox thành hôm nay?
- 13. Giá trị thuộc tính Ban đầu ban đầu để tra cứu EJB
- 14. CLLocationCài đặt ban đầu
- 15. Xây dựng lớp học với giá trị ban đầu
- 16. Textfield không hiển thị giá trị ban đầu
- 17. giá trị ban đầu trong nút radio biểu mẫu django
- 18. INSERT nhiều hàng và OUTPUT giá trị ban đầu (nguồn)
- 19. Chọn giá trị ban đầu của phần tử
- 20. đặt giá trị ban đầu trong CreateView từ ForeignKey (non-self.request.user)
- 21. Ghi đè giá trị ban đầu trong ModelForm
- 22. Sử dụng giá trị 'ban đầu' trong CSS là gì?
- 23. Đặt giá trị mặc định cho thuộc tính khóa ngoài
- 24. loại bỏ không đặt giá trị thực sự ban đầu trên nút radio
- 25. Các biểu mẫu Django, đặt giá trị ban đầu thành request.user
- 26. đặt giá trị var từ giá trị trường đầu vào
- 27. giá trị ban đầu cho lĩnh vực hình thức django lựa chọn bỏ qua
- 28. Đặt giá trị bắt đầu cho AUTOINCREMENT trong SQLite
- 29. Shopify Cài đặt ban đầu Snag
- 30. Đặt giá trị khởi đầu cho cột với autoincrement
Kiểm tra này: http://jayprakashdubey.blogspot.in/2014/07/nsuserdefault -usage.html –