8

Dokumentacja nie jest jasna co do korzystania z NSUbiquitousKeyValueStore w przypadku brzegów.Sposób korzystania z NSUbiquitousKeyValueStore i NSUserDefaults razem

Jeśli chcę ustawić wartość, rozumiem, że powinienem ustawić wartość zarówno NSUserDefaults, jak i NSUbiquitousKeyValueStore, ponieważ iCloud może być wyłączony. Jednak w moich testach [NSUbiquitousKeyValueStore defaultStore] zwraca prawidłowy obiekt, nawet jeśli iCloud jest wyłączony (testowany na Mac OS).

Ponadto, jeśli rozumiem, że usługa iCloud jest włączona, wartości NSUbiquitousKeyValueStore są przechowywane na dysku (i dostępne w trybie offline). Jaki jest powód używania NSUserDefaults, jeśli masz pewność, że masz mniej niż 64 KB danych?

Odpowiedz

1

Używam http://blog.mugunthkumar.com/coding/ios-code-mkicloudsync-sync-your-nsuserdefaults-to-icloud-with-a-single-line-of-code/

Jest to prosta klasa napisany przez Mugunth Kumar (dzięki!), Który wykonuje pracę dla Ciebie ... Chyba że masz specjalne potrzeby, dodać jedną linię kodu i będzie to robić wszystkie czytania i pisania do iCloud ... wszystko, co musisz zrobić, to czytać i pisać do NSUserDefaults jak zwykle ...

Edit:

uważne, jeśli usunąć element z NSUserDefaults kod i powiązany powyżej nie usunie przedmiotu z chmury. Po wyjęciu elementu z NSUSerDefaults zrób to samo NSUbiquitousKeyValueStore a więc:

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

Odpowiedź Mugunth Kumar podane powyżej działa pięknie, jeśli chcesz synchronizować wszystkie swoje NSUserDefaults!

Jednak jest to podejście WSZYSTKIE lub NIC. Nie można wybrać ani wybrać wartości domyślnych, które chcesz zsynchronizować.

Znalazłem ten Tutorial, który może być pomocny, jeśli chcesz być bardziej wybredny.

Powiązane problemy