Giả sử tôi có khóa @ "MyPreference", với giá trị tương ứng được lưu trữ thông qua NSUserDefaults.Ca cao - Thông báo về NSUserThay đổi giá trị mặc định?
Có cách nào để được thông báo khi giá trị được sửa đổi không?
Hoặc nó có thể được thực hiện thông qua các ràng buộc không? (Nhưng trường hợp này, thay vì ràng buộc giá trị cho một phần tử giao diện người dùng, tôi muốn đối tượng của tôi được thông báo về thay đổi, để tôi có thể thực hiện các tác vụ khác.)
Tôi biết rằng NSUserDefaultsDidChangeNotification có thể được quan sát, nhưng điều này dường như là một cách tiếp cận tất cả hoặc không có gì, và dường như không có cơ chế ở đó để lấy cặp khóa-giá trị cụ thể đã được sửa đổi. (. Hãy thoải mái để sửa)
Bạn cũng có thể gọi phương pháp này trên '[NSUserDefaults standardUserDefaults]' và không cần phải thêm vào trước các "giá trị." đến đường dẫn chính. Các thông số khác vẫn không thay đổi. –
Tôi không thể làm cho nó hoạt động như Quin đề xuất sử dụng '[NSUserDefaults standardUserDefaults]'. Tuy nhiên, việc thêm chuỗi không cần thiết vì '... forKeyPath: @" values.MyPreference "...' sẽ hoạt động. Ngoài ra, bạn sẽ cần phải thực hiện '- (void) observValueForKeyPath: (NSString *) keyPath ofObject: (id) thay đổi đối tượng: (NSDictionary *) thay đổi bối cảnh: (void *) context;' để thực sự nắm bắt sự kiện. – TrevorL
Hi TrevorL ... mặc dù stringByAppendingString: không cần thiết, nó giúp khi tạo một phương thức chung - (void) observPreference: (NSString *) pref {... [@ "values." stringByAppendingString: pref] ... – Arvin