Stocker les Scores du Classement dans CoreData?

0

La question

Je suis en train de stocker un tableau de classement dans CoreData(avec d'éventuelles CloudKit fonctionnalité) sur mon application et a été confondu sur la meilleure façon de le faire.

L'utilisateur sera en mesure de créer et d'enregistrer plusieurs classements. Classement aura une date de création, nom, ID, ainsi que tous les scores pour ce classement. Dans le modèle de données central (ci-dessous), j'ai ajouté tous ces attributs, le classement de l'entité et pour le score d'attribut, je l'ai laissé comme indéfini. Je pensais faire un tableau de mon score struct. Cependant, lorsque j'essaie de le faire, newLearboard.scores = [Score]() dans mon Persistence.swift fichier je me suis dit que j'ai besoin d'ajouter le score as NSObject. Est-ce la bonne manière de faire ceci ou fera cela créer des conséquences inattendues quand je vais à ajouter/affichage du tableau de classement des scores?

Le Score est une structure avec un peu de champs tels que le nom et la valeur etc.

Je peut aussi convertir le Score de tableau à une OrderedSet de la swift collections paquet par la suite. Sera-ce de créer d'autres problèmes?

enter image description here

cloudkit core-data swift swiftui
2021-11-22 17:20:15
1

La meilleure réponse

0

Base de Données ne sais pas comment stocker Swift des structures. Xcode essaye de les aider, mais pas vraiment de réussir. À l'aide de as NSObject ne pas faire ce que vous voulez, parce qu'une structure ne peut pas être identifié à un NSObject.

La Base de Données de façon serait d'ajouter une deuxième entité pour le modèle appelé Score puis ajouter une Base de Données à plusieurs relations de Leaderboard pour Score. Ensuite, chaque Score serait une NSManagedObject, qui est une sous-classe de NSObject.

Il est également possible de mettre n'importe quoi dans la Base de Données si vous pouvez le convertir en une instance Data d'abord. Si vous avez utilisé JSONEncoder vous pouvez convertir votre score de tableau de Data et utiliser un Data attribut. Vous devez écrire du code pour coder chaque fois que vous mettez à jour les scores, et de décoder chaque fois que vous lisez les scores. Si vous décidez de le faire, gardez à l'esprit que, bien que JSONEncoder utilise Codable, Codable n'est pas utile avec les Données de Base (il peut utiliser NSCoding mais ce n'est pas la même chose).

2021-11-22 18:08:49

La conversion de Données, le codage sécurisé message d'avertissement, il doit être converti en chaîne ou quelque chose comme ça.
lorem ipsum

Qui ne correspond pas à mon expérience. Ce que je vais décrire n'implique pas de NSCoding à tous, de sorte que les messages qu'il aurait l'impression sur du codage sécurisé n'arrive pas.
Tom Harrington

Peut-être que nous parlons des tactiques différentes. À quoi je fais référence est le style utilisé sur la question que j'ai lié ci-dessus. Que de codage sécurisé message à l'aide de données revient de plus en plus à l'aide de transformables. Le message d'erreur exact est dans les commentaires.
lorem ipsum

J'ai été précisément d'éviter transformables attributs-- qui JSONEncoder ne pas travailler avec, de toute façon.
Tom Harrington

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................