Могу ли я сохранить черновики пользователя, используя NSUserDefaults? - PullRequest
0 голосов
/ 04 сентября 2010

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

Мое приложение позволяет пользователю выбрать 1 или 2 изображения для загрузки и обмена,Пользователи могут сохранить черновик и вернуться к загрузке позже.Мой текущий подход заключается в том, чтобы сохранить выбранный UIImage в каталог / Library и сохранить путь к файлу в NSUserDefaults.

Структура данных: NSUserDefaults -> Черновик NSDictionary -> ключ - NSArray.У меня есть много черновиков (так же, как черновики по электронной почте).Словарь проекта содержит сохраненную строку даты в качестве ключа и пути к строковому файлу в NSArray.Процесс сохранения не имеет никаких проблем в настоящее время.Но поскольку в NSUserDefaults doc они говорят:

Система значений по умолчанию позволяет приложению настраивать свое поведение в соответствии с предпочтениями пользователя. Для соответствия предпочтениям пользователя.

Итак, я не знаю, хорош ли мой подход или нет, возможны ли в будущем проблемы с ним?

Вы предлагаете мне какое-нибудь простое решение, которое может сделать это хорошо без большого количества кода.Я знаю, что есть CoreData, но я не знаю много об этом.Легко ли освоить и реализовать?

Я не знаю, может ли это повлиять на проблему с памятью или нет, но я ожидаю, что пользователь может сохранить черновики менее 100.

1 Ответ

2 голосов
/ 04 сентября 2010

Вы не хотите сохранять какие-либо фактические данные в NSUserDefaults, однако допустимо сохранить предыдущее состояние приложения в значениях по умолчанию, чтобы приложение могло возобновить работу с того места, где оно было остановлено.

Ваша структура данных кажется слишком сложной. Вы можете просто сохранить массив путей к файлам по умолчанию для пользователя.

NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
NSArray *draftPaths=[NSArray arrayWithObjects:filePath1, filePath2,nil];
[defaults setObject:draftPaths forKey:@"DraftPaths_Key"];
// to retrieve
NSArray *previousDraftPaths=[defaults objectForKey:@"DraftPaths_Key"];

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

NSArray *libraryPaths=NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *libPath=[libraryPaths objectAtIndex:0];
...