#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, но они, вероятно, не понадобятся для такого небольшого набора данных.