8

La documentazione non è chiara su come utilizzare NSUbiquitousKeyValueStore con casi limite.Come utilizzare NSUbiquitousKeyValueStore e NSUserDefaults insieme

Se voglio impostare un valore, capisco che dovrei impostare un valore per entrambi NSUserDefaults e NSUbiquitousKeyValueStore poiché iCloud potrebbe essere disabilitato. Tuttavia nei miei test [NSUbiquitousKeyValueStore defaultStore] restituisce un oggetto valido anche se iCloud è disabilitato (testato su Mac OS).

Inoltre, a mio parere è che se iCloud è abilitato, i valori di NSUbiquitousKeyValueStore vengono memorizzati su disco (e disponibili offline). Quali sono le ragioni per utilizzare NSUserDefaults se sei sicuro di avere meno di 64 KB di dati?

risposta

1

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

Si tratta di una semplice classe scritto da Mugunth Kumar (grazie!), Che fa il lavoro per voi ... A meno che non si hanno esigenze particolari, aggiungere una riga di codice e lo farà tutti la lettura e la scrittura di iCloud ... tutto quello che dovete fare è leggere e scrivere a NSUserDefaults come al solito ...

Edit:

carful, se si rimuove un elemento dalla NSUserDefaults il codice ho collegato a sopra non rimuoverà l'oggetto dal cloud. Ogni volta che si rimuove un elemento da NSUserDefaults si prega di fare lo stesso per NSUbiquitousKeyValueStore come Quindi:

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

La risposta Mugunth Kumar fornito sopra funziona a meraviglia se si desidera sincronizzare tutti i tuoi NSUserDefaults!

Tuttavia, è un approccio TUTTO o NULLA. Non è possibile selezionare o selezionare i valori predefiniti che si desidera sincronizzare.

Ho trovato questo Tutorial che può essere di aiuto se stai cercando di essere più schizzinosi.

Problemi correlati