Наиболее эффективный подход - сделать ваш пользовательский объект подклассом NSManagedObject
и сохранить его в NSManagedObjectContext
с использованием Core Data. В iOS всегда будет использоваться база данных sqlite, в Mac OS X вы можете использовать sqlite, xml или собственный двоичный формат (меньше / быстрее, чем xml).
В зависимости от сложности вашей структуры данных и вероятности ее изменения в будущем, эта методика может быть или не быть слишком сложной для вашего приложения. Настройка очень сложная, а API очень сложный, но это лучший выбор, если вам нужно хранить десятки тысяч / миллионов объектов в файле.
Для вашего приложения у меня был бы один файл sqlite, содержащий все радиостанции в приложении.
Самый простой вариант - реализовать протокол NSCoding
в классе вашего пользовательского объекта. Документировано здесь:
http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Archiving/Articles/codingobjects.html#//apple_ref/doc/uid/20000948-BCIHBJDE
Основная теория заключается в том, что ваш объект записывает или считывает все свои данные в «кодер», а затем передает кодер любому дочернему объекту (объектам). Вне класса вы используете класс «архиватор» или «unarchiver», чтобы координировать все.
Как только ваш пользовательский класс реализует NSCoding
, вы можете читать / записывать его на диск с помощью:
myObject = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
[NSKeyedArchiver archiveRootObject:myObject toFile:filePath];
Это очень простой подход, но у него есть несколько недостатков, например, вам нужно будет найти свой собственный способ поддержки разных версий формата файла (например, с другим расширением файла).
Многие классы в Cocoa / CocoaTouch уже реализуют NSCoding
, поэтому их можно записать в файл таким способом (включая NSArray
, NSString
, NSNumber
и т. Д.).
Для вашего приложения я бы использовал это для хранения каждой радиостанции в одном файле. Когда приложение запустится, загрузите все радиостанции из каталога. Вам следует рассмотреть возможность включения функции перетаскивания файлов iTunes для вашего приложения, чтобы пользователи могли легко обмениваться файлами радиостанции со своими друзьями или между устройствами.
Это также хорошо сочетается с iCloud для синхронизации между устройствами, я мало изучал iCloud, но я ожидаю, что один файл на радиостанцию будет идеальным способом для реализации синхронизации iCloud.