Хранить результаты в таблице лидеров в CoreData?

0

Вопрос

Я пытаюсь сохранить таблицу лидеров в CoreData(с возможной функциональностью CloudKit) в своем приложении и не знал, как лучше всего это сделать.

Пользователь сможет создавать и сохранять несколько таблиц лидеров. У каждой таблицы лидеров будет дата создания, имя, идентификатор, а также все оценки для этой таблицы лидеров. В основной модели данных (ниже) я добавил все эти атрибуты в качестве атрибутов в объект таблицы лидеров, а для атрибута оценки оставил его неопределенным. Я подумывал о том, чтобы сделать его массивом моих score структура. Однако, когда я пытаюсь это сделать, newLearboard.scores = [Score]() в моем Persistence.swift файл Мне говорят, что мне нужно добавить оценку as NSObject. Это правильный способ сделать это или это приведет к непредвиденным последствиям, когда я перейду к добавлению/отображению таблицы лидеров результатов?

Оценка-это структура с несколькими полями, такими как имя, значение и т.д.

В конечном итоге я также могу преобразовать массив оценок в упорядоченный набор из пакета swift collections. Создаст ли это другие проблемы?

enter image description here

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

Лучший ответ

0

Основные данные не знают, как хранить структуры Swift. Xcode пытается помочь, но на самом деле не преуспевает. С помощью as NSObject не будет делать то, что вы хотите, потому что структура не может быть типизирована для NSObject.

Основным способом обработки данных было бы добавление второй сущности в модель под названием Score а затем добавьте отношение "Основные данные ко многим" из Leaderboard Для Score. Затем каждый Score было бы NSManagedObject, который является подклассом NSObject.

Также можно поместить что угодно в основные данные, если вы можете преобразовать их в экземпляр a Data Первый. Если вы использовали JSONEncoder вы можете преобразовать свой массив баллов в Data и используйте Data атрибут. Вам придется писать код для кодирования каждый раз, когда вы обновляете результаты, и декодировать каждый раз, когда вы читаете результаты. Если вы решите это сделать, имейте в виду, что, хотя JSONEncoder использует Codable, Codable не полезен с основными данными (он может использовать NSCoding но это не одно и то же).

2021-11-22 18:08:49

Преобразование в данные выдает предупреждающее сообщение о безопасном кодировании, которое должно быть преобразовано в строку или что-то в этом роде.
lorem ipsum

Это не соответствует моему опыту. То, что я описываю, не включает в себя NSCoding вообще, поэтому сообщений, которые он печатал бы о безопасном кодировании, не бывает.
Tom Harrington

Может быть, мы говорим о другой тактике. Я имею в виду стиль, используемый в вопросе, который я связал выше. Это безопасное кодирующее сообщение с использованием данных появляется все чаще и чаще с помощью transformable. Точное сообщение об ошибке содержится в комментариях.
lorem ipsum

Я специально избегал трансформируемых атрибутов, которые JSONEncoder в любом случае, это не сработало бы.
Tom Harrington

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

Популярное в этой категории

Популярные вопросы в этой категории