Должен ли я использовать SQLite для добавления этой функции?

Мне нужно ваше пособие по этому поводу, я в настоящее время разрабатываю своеобразное семейное приложение (все относится к семье)

Я хотел бы добавить что-то похожее на семейное древо или членов семьи. (Использование вида таблицы), и каждый член / элемент в списке будет иметь свой собственный «вид», содержащий 50 слов о биографии о нем и его фотографии.

Поскольку я все еще новичок в разработке iOS, я до сих пор не работал с SQLite. Вы, ребята, думаете, что SQLite лучше всего подходит для этой работы? Как насчет фотографий. Есть ли способ поставить миниатюру для каждого участника?

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

Однако, если вы сделаете свой собственный SQLite, я предлагаю вам использовать что-то вроде FMDB , поэтому вы избавляете себя от необходимости писать код SQLite.

И, как я уже упоминал в комментарии другого ответа на этот вопрос, касающийся изображений в Core Data или SQLite, вы сталкиваетесь с значительным успехом для этого. Если вы имеете дело с маленькими изображениями (например, с эскизами), это нормально, но если вы имеете дело с большим количеством больших изображений, вы действительно можете захотеть сохранить их в некоторой структуре каталогов в папке «Документы» (а затем сохранить относительный имена путей в вашей базе данных). Не архитектурно элегантно снимать изображения из базы данных и использовать папку «Документы», но по соображениям производительности вы можете сделать именно это.

Нет. Для этого я бы использовал CoreData . CoreData предоставляет инструменты графического моделирования для построения объектной модели и обработки всей утомительной домашней работы, необходимой для сохранения графика объекта на диске.

Фотографии, которые вы должны хранить как обычные файлы на диске, и быть смоделированы объектом CoreData, который поддерживает ссылку (URI или путь к файлу) на фотографию.

Я бы использовал CoreData для этого, он сводится к базе данных SQLite, но Apple добавила свою собственную оболочку вокруг базы данных SQLite, что делает ее очень простой в использовании.

На сайте разработчика есть несколько примеров приложений, а также множество Tuts, просто просматривая фразу «пример CoreData» в google, ссылка здесь – ro Raywenderlich, которая является хорошим местом для начала. Я думаю, как только вы пройдете через этот блог, вы будете использовать CoreData все больше и больше, когда вам нужно хранить такие вещи.

Что касается хранения миниатюр, я бы сохранил их на устройстве и сохранил путь к файлу в базе данных.

Да, вы можете использовать SQLite для этого; на самом деле он идеально подходит для ведения генеалогического древа с учетом его реляционного характера.

Фотоданные могут быть сериализованы в байтовый поток ( NSData * ) и сохранены в столбце как blob.

База данных имеет огромный профессионал, и вы можете хранить все в одном месте.

Вы можете (не то, что я рекомендую) также использовать структуру папок, чтобы указать такие данные, как / images /, / words /, / people / и использовать одно и то же имя для всех по всем папкам (tim.jpg, tim.txt, tim .dat)

Или используйте небольшую базу данных, чтобы хранить все в разных таблицах по отношению к вашей таблице «family (_members)».

Вы также можете хранить изображения в базе данных, в основном как blob (или base64, закодированные или или … или yuck)

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

Здесь у вас есть несколько вариантов.

Если вы сохраняете всю информацию внутри самого приложения (т. Е. Детали не извлекаются из Интернета где-то), SQLite (как бэкэнд CoreData), вероятно, будет хорошей идеей. Читайте об использовании CoreData, чтобы вы не изобретали колесо, и поэтому ваша реализация обеспечивает плавный прокручиваемый опыт, который ожидают пользователи iPhone.

Тем не менее, фотографии нуждаются в другом способе хранения / поиска.

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

 @interface ThumbnailManager : NSObject { id<ImageCache> _imageCache; // You make this. } - (UIImage *)imageForFamilyMemberWithName:(NSString *)name; @end 

Это похоже на то, что я сделал бы на вашем месте.

Удачи!