Основные данные: я на правильном пути?Настройка модели данных для данных, которые содержат несколько массивов, например.данные акселерометра - PullRequest
0 голосов
/ 15 марта 2012

Я работаю над проектом, который включает в себя много данных, и сначала я делал все это в plist, и я понял, что это выходит из-под контроля, и мне придется изучать Core Data.Я все еще не совсем уверен, могу ли я делать то, что я хочу в Core Data, но я думаю, что это должно сработать.Я настроил модель данных, но я не уверен, что это правильный способ сделать это.Пожалуйста, продолжайте читать, если вы думаете, что можете помочь, и дайте мне знать, если я на правильном пути.Пожалуйста, потерпите меня, потому что я пытаюсь объяснить это как можно подробнее.

У меня есть базовый объект с атрибутами, установленными на корневом уровне;сказать человека с такими атрибутами, как имя, дата рождения и т. д. Довольно просто.Вы настроили в своей модели одну сущность, подобную этой «персоне», и вы можете сохранить столько данных, сколько захотите, в своих данных и извлечь их в виде массива, верно?Его можно отсортировать на основе атрибута Person, например, даты, когда они были добавлены в базу данных.

Теперь, когда я немного запутался, я хочу сохранить несколько разных коллекций данных с каждымчеловек.Например, список курсов и связанных с ними тестовых оценок.В листе со списком я бы сохранил массив словарей, в которых они хранятся, отсортированные по дате оценки.Я настроил это в своей модели данных так, что я добавил сущность «Тесты» и отношение «ко-многим» от человека к тестам, а затем, когда я извлекаю это, я получаю NSSet, который я могу заказать по отметке времени.снова?Есть ли лучший способ сделать это?

Точно так же у Человека может быть набор массивов числовых данных (такой, который вы могли бы отображать с течением времени, например. Nike + хранит ваши беговые данные, такие как расстояние против времени, иу человека было бы несколько прогонов, связанных с ним, отсюда и набор массивов, каждый со своей собственной датой сбора).Я настроил это немного по-другому, с атрибутом «Runs» с атрибутом timestamp, который связан с Person через отношение «ко-многим» с обратным «forPerson».Затем объект Runs подключается к другому объекту через отношение «многие», которое имеет атрибуты для хранения числовых данных и времени.Это еще раз, я бы использовал атрибут time / order для их сортировки.

Так что главный вопрос, который у меня есть, заключается в том, будет ли использование внутреннего атрибута, такого как timestamp, для сортировки набора правильным способом загрузки в "массив "из основных данных.Поиск на форумах / переполнение стека о том, как хранить NSArrays в основных данных, кажется слишком сложным по сравнению с этим, что дает мне ощущение, что я что-то неправильно понимаю.

Спасибо за вашу помощь.Извините за весь текст, но я новичок в Core Data, и я полагаю, что правильная настройка модели данных очень важна, прежде чем начинать программировать методы получения / сохранения данных.При необходимости я могу настроить образец модели для демонстрации этого и опубликовать его изображение.

1 Ответ

1 голос
/ 15 марта 2012

CoreData даст вам NSSets по умолчанию.Они могут быть преобразованы в массивы путем вызова allObjects или sortedArrayUsingDescriptors, если вы хотите отсортированный массив.Свойство «order» в описании взаимосвязи дает вам NSOrderedSet в управляемом объекте.Хэшированные наборы обеспечивают более быстрые добавления, проверки доступа и членства, с штрафом (относительно упорядоченных наборов) за сортировку.

...