8

Tài liệu không rõ ràng về cách sử dụng NSUbiquitousKeyValueStore với các ốp cạnh.Cách sử dụng NSUbiquitousKeyValueStore và NSUserDefaults cùng nhau

Nếu tôi muốn đặt giá trị, tôi hiểu rằng tôi nên đặt giá trị cho cả hai NSUserDefaultsNSUbiquitousKeyValueStore vì iCloud có thể bị tắt. Tuy nhiên trong các thử nghiệm của tôi, [NSUbiquitousKeyValueStore defaultStore] trả về một đối tượng hợp lệ ngay cả khi iCloud bị tắt (được thử nghiệm trên Mac OS).

Ngoài ra, theo hiểu biết của tôi là nếu iCloud được bật, giá trị của NSUbiquitousKeyValueStore được lưu vào đĩa (và khả dụng khi ngoại tuyến). Lý do để sử dụng NSUserDefaults là gì nếu bạn chắc chắn rằng bạn có ít hơn 64KB dữ liệu?

Trả lời

1

Tôi đang sử dụng http://blog.mugunthkumar.com/coding/ios-code-mkicloudsync-sync-your-nsuserdefaults-to-icloud-with-a-single-line-of-code/

Nó là một lớp đơn giản được viết bởi Mugunth Kumar (thanx!) Mà không làm việc cho bạn ... Trừ khi bạn có nhu cầu đặc biệt, thêm một dòng mã và nó sẽ làm tất cả việc đọc và viết để iCloud ... tất cả các bạn cần làm là đọc và ghi vào NSUserDefaults như thường lệ ...

Edit:

Carful, nếu bạn loại bỏ một mục từ NSUserDefaults mã tôi liên kết với ở trên sẽ không xóa mục khỏi đám mây. Bất cứ khi nào bạn xóa một mục từ NSUSerDefaults xin vui lòng làm như vậy để NSUbiquitousKeyValueStore như Vì vậy:

NSUbiquitousKeyValueStore* keyValueStore=[NSUbiquitousKeyValueStore defaultStore]; 
[keyValueStore removeObjectForKey: yourKey]; 
1

Câu trả lời Mugunth Kumar cung cấp ở trên tác phẩm đẹp mắt nếu bạn muốn đồng bộ hóa tất cả các NSUserDefaults của bạn!

Tuy nhiên, đó là cách tiếp cận ALL hoặc NOTHING. Bạn không thể chọn hoặc chọn mặc định bạn muốn đồng bộ hóa.

Tôi đã tìm thấy điều này Tutorial có thể hỗ trợ nếu bạn đang tìm kiếm cầu kỳ hơn.