Лучший способ хранения и загрузки большого объема данных в Objective-C

#objective-c #ios #cocoa-touch

#objective-c #iOS #cocoa-touch

Вопрос:

Я нахожусь в процессе создания приложения, которое будет использовать много данных, например ~ 100 записей, каждая из которых содержит несколько изображений, > 250 слов текста и множество значений 1 слово / символ.

Мне просто интересно, как лучше всего сделать это в objective c?

Например, будет ли у меня обычный текстовый файл, содержащий все значения, а затем считывать его во время выполнения?

Или мне нужно будет создать объект, который содержит все эти значения?

Я бы предпочел, чтобы это не использовало веб-источник, поскольку я хочу, чтобы приложение могло работать в автономном режиме.

Комментарии:

1. «Objective-C» — это просто язык. Мы говорим о iOS Cocoa Touch, Mac Cocoa, GNUstep или что?

Ответ №1:

У вас есть много вариантов. Вы можете хранить данные в списках, создавать для них объекты и сериализовать их в файл или использовать базу данных. Для вашего конкретного сценария я бы рекомендовал хранить в базе данных, такой как sqlite.

Комментарии:

1. Хорошо, большое спасибо за ваш ответ, я изучу базы данных sqlite

2. Да, SQLite — это правильный путь. Одним из преимуществ является то, что вы можете создать БД в другом окне (практически на любом языке или с одним из нескольких инструментов GUI) и «установить» его, вместо того, чтобы создавать его на месте.

Ответ №2:

Сотня записей, каждая из которых содержит, возможно, несколько десятков полей, — это не так много данных. Я бы предложил хранить данные в виде списка свойств, возможно, массива словарей. Это самое простое решение, и, вероятно, более чем подходящее для ваших нужд. Загрузка ваших данных может быть такой же простой, как:

 NSArray *records = [[NSArray alloc] initWithContentsOfFile:pathToFile];
  

Каждая запись в массиве может быть словарем с ключом для каждого поля в записи. Это дает вам большую гибкость. Конечно, вы можете получить доступ к каждой записи по отдельности, но вы также можете использовать NSPredicate для выбора подмножеств записей, соответствующих указанным вами критериям. Вы также можете использовать кодирование ключ-значение с массивом, чтобы получить массив всех значений для определенного ключа. Например, если вам нужен массив поля «name» для каждой записи, вы могли бы сказать:

 NSArray *names = [records valueForKey:@"name"];
  

Есть место для таких решений, как SQLite и Core Data, но они, вероятно, не понадобятся для такого небольшого набора данных.