Tout le monde a répondu à la question directe "y a-t-il une limite ?". Cependant, j'ai trouvé ce fil de discussion cherchant vraiment à comprendre " combien est trop à stocker dans UserDefaults ?"
Si vous cherchez cette réponse, voici une utile filetage . Les réponses que j'ai trouvées utiles étaient d'aller dans votre fichier de projet et de regarder la taille du fichier plist :
5 objets, c'est presque rien. Vous vous en sortirez !
Sur ma machine, j'ai environ 28 mégaoctets de données dans mes paramètres par défaut. Cela ne pose aucun problème.
D'après mon expérience générale de la programmation avec les tableaux, je pense que les performances commencent à diminuer rapidement lorsque vous atteignez des milliers d'éléments, en fonction de leur taille. Par conséquent, dans un programme, je n'aurais pas de problème à stocker quelques centaines d'éléments. Ceci dit, si j'étais vous, je commencerais probablement à utiliser une base de données sqlite3 ou coredata, le plus tôt possible.
Il est important de s'en souvenir :
Ce qui précède a apaisé mes craintes que mon nombre croissant de valeurs par défaut (environ 20-25 maintenant) ne pose des problèmes. J'utilise déjà CoreData, et je me demandais donc lequel utiliser puisque le nombre de préférences/personnalisations utilisateur autorisées ne cesse d'augmenter. Donc, je vais rester avec les valeurs par défaut de l'utilisateur.
Cependant Comme d'autres réponses l'ont souligné, le fichier sera lu et écrit comme un tout. Donc lire 20 dictionnaires clé/chaîne et 5 dictionnaires clé/booléen juste pour récupérer une chaîne de caractères... pas vraiment l'idéal. Néanmoins, si cela ne nuit pas aux performances et permet d'économiser une tonne de code, pourquoi pas ?
0 votes
NSUserDefaults est destiné à des quantités relativement faibles de données, interrogées très fréquemment et modifiées occasionnellement. Son utilisation d'une autre manière peut être lente ou utiliser plus de mémoire que des solutions plus adaptées à ces utilisations. Actuellement, il n'y a pas de limite pour les valeurs par défaut locales des utilisateurs, sauf sur tvOS. J'ai trouvé cette information en faisant un "clic cmd" sur UserDefaults qui vous amène à leur fichier source. J'ai lu la documentation à la recherche de cette information, mais je ne l'ai pas trouvée.
1 votes
Je ne suis pas sûr mais vous pouvez voir ceci enlace .