Loja tabela de Classificação Pontuações em CoreData?

0

Pergunta

Eu estou tentando armazenar uma tabela de classificação no CoreData(com eventual CloudKit funcionalidade) no meu app e estava confuso sobre a melhor forma de fazê-lo.

O usuário será capaz de criar e salvar várias tabelas de classificação. Cada categoria terá uma data de criação, nome, ID, bem como todas as pontuações para o ranking. No núcleo do modelo de dados (abaixo), eu adicionei todos os atributos para a tabela de classificação da entidade e para a pontuação de atributo, deixei-o como indefinido. Eu estava pensando em fazer um array de minha score struct. No entanto, quando tento fazer, newLearboard.scores = [Score]() no meu Persistence.swift arquivo eu sou informado de que precisa para adicionar a pontuação as NSObject. É esta a maneira correta de fazer isso ou isso vai criar consequências não intencionais que quando eu vá para adicionar/visualizar o ranking de pontuação?

A pontuação é uma estrutura com alguns campos como nome e um valor, etc.

Eu também poderá converter a Pontuação de matriz para um OrderedSet da swift coleções pacote eventualmente. Isso vai criar outros problemas?

enter image description here

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

Melhor resposta

0

Núcleo de Dados não sabe como armazenar Swift estruturas. Xcode está tentando ajudar, mas não é realmente a conseguir. Usando as NSObject não vou fazer o que você quer, porque uma estrutura não pode ser distribuído para um NSObject.

O Núcleo de Dados de forma seria adicionar uma segunda entidade para o modelo chamado de Score e, em seguida, adicionar um Núcleo de Dados para muitos a relação de Leaderboard para Score. Em seguida, cada Score seria um NSManagedObject, que é uma subclasse de NSObject.

Também é possível colocar qualquer coisa no Núcleo de Dados se você pode convertê-lo para uma instância Data primeiro. Se você usou JSONEncoder você pode converter a sua pontuação matriz para Data e usar um Data atributo. Você teria que escrever código para codificar cada vez que você atualiza pontuações, e decodificar cada vez que você a leitura de partituras. Se você decidir fazer isso, tenha em mente que, embora JSONEncoder usa Codable, Codable não é útil com Dados do Núcleo (pode usar NSCoding mas isso não é a mesma coisa).

2021-11-22 18:08:49

A conversão de Dados dá o seguro de codificação de mensagem de aviso tem de ser convertido para string ou algo assim.
lorem ipsum

Que não corresponde à minha experiência. O que eu estou descrevendo não envolvem NSCoding em todas as mensagens que ele iria imprimir sobre codificação segura não acontecer.
Tom Harrington

Talvez estamos falando de diferentes táticas. A que me refiro é o estilo usado na pergunta que eu vinculada acima. Que seguro de codificação de mensagem usando dados vem mais e mais, usando transformável. A exata mensagem de erro está nos comentários.
lorem ipsum

Eu estava evitando transformável atributos-que JSONEncoder não iria funcionar com, de qualquer maneira.
Tom Harrington

Em outros idiomas

Esta página está em outros idiomas

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