Постоянное хранение какао / MacOSX - PullRequest
6 голосов
/ 19 июля 2009

При написании приложения для MacOSX с использованием Cocoa / Objective-C я хотел бы иметь возможность хранить данные, введенные пользователями. На данный момент в установке будет только один пользователь; Тем не менее, я хотел бы получить представление о том, как меняются методы хранения, если в одной установке было несколько пользователей.

В случае 1 пользователя на установку, я должен придерживаться SQLLite для постоянного хранения, или какова рекомендация?

Если бы я разрешил использовать несколько пользователей для одной установки, какой метод постоянного хранения был бы предпочтительным?

Ответы [ 5 ]

7 голосов
/ 19 июля 2009

Вы можете использовать Core Data и создать постоянное хранилище для каждого пользователя (в ~ / Library / Application Data / My App /)

2 голосов
/ 19 июля 2009

Вы также можете рассмотреть возможность использования NSDictionary в качестве внутреннего механизма хранения, а затем записать их в файлы списка свойств, используя [NSDictionary writeToFile: atomically:]. Мой друг любит называть словари структурой данных Бога (язык в щеке).

Если ваш размер данных скромный, есть несколько преимуществ: удобочитаемое, удобочитаемое и изменяемое.

1 голос
/ 19 июля 2009

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

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

Ваши параметры включают списки свойств, Базовые данные (более архитектурное решение - вы либо основываете свое приложение на Базовых данных, либо не используете их), SQLite, NSKeyedArchiver и свой собственный пользовательский формат.

1 голос
/ 19 июля 2009

Какие данные вы хотите сохранить? Конечно, вы все равно можете использовать sqlite для хранения данных для нескольких пользователей (например, это делает Firefox).

Но в зависимости от ваших данных вы можете сохранить их в обычные файлы / документы? Взгляните на протокол NSCoding и абстрактный класс NSCoder. Или проверьте архитектуру документа (NSDocumentController, NSDocument и NSWindowController).

0 голосов
/ 30 января 2010

я бы начал хранить данные в облаке, а не хранить их локально. Теперь, когда выходит ipad, что делать, если ваше приложение используется также на iphone и ipad. Если вы храните данные в облаке, и приложение iphone, и ipad могут использовать одни и те же данные. Если вы храните локально, очевидно, что приложение iphone и приложение ipad не могут использовать одни и те же данные.

...