Работа с данными в приложениях iOS (что выбрать? NSData, CoreData, sqlite, PList, NSUserDefaults)
когда я разрабатываю приложение для iPhone (Time Tracker, ToDoList и т.д.), я никогда не знаю, как лучше всего работать с данными. Как только я использовал plist, в следующий раз sqlite или CoreData.
Как вы решаете, что лучше всего подходит для вашего проекта?
(Только об управлении данными)
Например, если вы хотите разработать:
- Приложение Time Tracker > Является ли PList вашим выбором?
- Приложение RSS Reader > CoreData?
- Фото приложение > sqlite?
- Клиент EMail > ?
Для новичка вы можете указать мне примерно на правильные направления?
(Я знаю, что это очень многое зависит от приложения и что вы любите делать с
это, но любая мысль поможет)
Я далеко от разработки сложных приложений, они все еще довольно просты.
Спасибо за помощь,
Марк
Ответы
Ответ 1
Вы можете использовать эти правила для определения того, какая модель хранения будет работать для вашего приложения.
- Если данные полностью вписываются в память и относительно неструктурированы, используйте plist
- Если данные полностью вписываются в память и имеют древовидную структуру, используйте XML
- Если данные не помещаются в память и имеют структуру графика, и приложение не нуждается в необычных возможностях запроса, используйте Core Datali >
- Если данные не вписываются в память, имеет сложную структуру или приложение использует мощные возможности запросов, предоставляемые реляционными базами данных, используйте sqlite
- Если данные должны быть секретными (например, пароль), используйте keychain.
Обратите внимание, что эти варианты часто перекрываются, потому что несколько моделей хранения подходят для одного и того же приложения. Ваше окончательное решение зависит от ваших личных предпочтений - вы выбираете технологию, которую вы понимаете лучше.
Был вопрос о хорошем вопросе о sqlite и Core Data о переполнении стека, вы можете прочитать ответы на этот вопрос.
Ответ 2
Мое правило для каждого из них:
- Приложение Time Tracker > Основные данные
- Приложение RSS Reader > Основные данные
- Фотоприложение > Основные данные
- Клиент EMail > Основные данные
Хотя в каждом случае будут храниться вещи в файловой системе. Например, приложение с фотографией, очевидно, помещает фактические фотографии в файловую систему. Текст электронных писем будет содержаться в файловой системе и т.д. Фактические RSS-сообщения также могут быть текстовыми файлами, но с метаданными в объектах Core Data.
В какой-то момент вы можете обнаружить, что данные, которые вы храните, перерастают масштабируемость Core Data. В этот момент вы решили перейти на SQLite.
Дело в том, что Core Data настолько прост в использовании и поэтому превосходит предполагаемые альтернативы с более легким весом, почему бы вам не использовать его?