2013-04-27 10 views
0

У меня есть приложение iOS, которое я пытаюсь создать, который представляет пользовательские данные из файла .xlsx (MS Excel), который у меня есть. Файл имеет около 11 000 строк, по 20 столбцов на строку. Я создал парсер для преобразования каждой строки в подкласс NSObject, причем каждый столбец является переменной экземпляра. Я сделал это NSCoding совместимым, добавив каждый экземпляр к NSDictionary, с его ключом, являющимся первой строкой исходного файла, и заархивировал его. Моя проблема заключается в том, что я не хочу раскрепощать такой массивный NSDictionary, чтобы получить доступ к максимум 20 или объектам в нем, возможно, мне понадобится в любой момент времени.Сохранение данных для использования во время выполнения

Вопрос: Как я могу сохранить этот кусок данных таким образом, у меня нет 11 000 объектов, находящихся в куче, и все еще можно загрузить те, которые мне нужны, в приложение, Бег?

ответ

2

Я считаю, что ваш лучший вариант - экспортировать свои данные в базу данных.

Самые простые решения SQLite или CoreData.

Я бы пошел с CoreData, так как это сэкономит вам много времени на разработку (вам нужно потратить некоторое время, чтобы познакомиться с CoreData, хотя). Кроме того, он, вероятно, позаботится о ваших проблемах с памятью, связанных с хранением только объектов, которые вы используете в памяти.

В основном, CoreData - это граф объектов, который означает, что он позволяет загружать части графика только при необходимости (для типа магазина SQLite).

Из того, что вы описали, у вас есть одна сущность (строка с 20 столбцами), к которой вы хотите получить доступ, используя какой-то запрос без загрузки всех объектов в файл.

CoreData эквивалент будет:
1) Определить сущность в основных данных (один раз, в модели дизайнера)
2) Создать стек CoreData (для простой конструкции это автоматически генерируется)
3) Создание NSPredicate для выбора экземпляров вам нравится
4) Создание NSFetchRequest для определения доступа к данным
5) Выполнить запрос на главном контексте использования NSFetchedReaultsController 6) отображения результатов

Вы можете создать новый проект, который использует основные данные, и посмотреть пример того, как это работает.

+0

Спасибо, я проработал свой путь через руководство Big Nerd Ranch по программированию iOS, когда я остановился примерно на полпути, хотя немного поиграть. Я открыл книгу, чтобы посмотреть, на какой странице был включен CoreData, и обнаружил, что я оставил свою закладку на самой странице, на которой они начинают освещать CoreData, у меня есть немного чтения, но у меня уже есть проект, чтобы изучить концепция готова к работе. Опять же, спасибо. –