Domanda

di Apple afferma che se si desidera segnalare un GKAchievement ma si ottiene un errore di rete, il modo migliore per gestire questa situazione è quello di salvare il GKAchievement (possibilmente aggiungendolo a un array), poi periodicamente tentare di riportare il risultato.

Qual è il posto migliore per salvare i risultati? Sarebbe NSUserDefaults bastano, o sarebbe un elenco di proprietà essere un modo migliore?

Quando e con quale frequenza dovrei tentare di rapporto? Su avvio di applicazioni, o qualcosa del genere ogni 10 minuti?

È stato utile?

Soluzione

Un elenco proprietà può solo gestire specifiche classi (vedere "che cosa è un elenco di proprietà?" ), che GKAchievement non è uno dei. NSUserDefaults utilizza elenchi di proprietà, in modo che anche di fuori. GKAchievement, tuttavia, conforme al protocollo NSCoding, il che significa che si può facilmente risparmiare loro di disco utilizzando un NSKeyedArchiver. Vorrei creare una serie di successi non dichiarata e di lettura / scrittura di loro in questo modo:

//Assuming these exist
NSArray * unreportedAchievements;
NSString * savePath;

// Write to disk
[NSKeyedArchiver archiveRootObject:unreportedAchievements toFile:savePath];

// Read from disk
unreportedAchievements = [NSKeyedUnarchiver unarchiveObjectWithFile:savePath];

Altri suggerimenti

Si può tranquillamente salvare nulla in un elenco di proprietà (e quindi NSUserDefaults) trasformandola in NSData: archivedDataWithRootObject:

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top