我可以使用NSUserDefaults保存用户的草稿吗?

时间:2010-09-04 15:50:37

标签: iphone objective-c core-data nsuserdefaults

我正在尝试使用NSUserDefaults保存草稿,但我不确定它是否是保存数据而不是用户首选项的正确位置。

我的应用程序允许用户选择1或2个图像进行上传和共享。用户可以保存草稿并稍后返回上传。我目前的方法是将选定的UIImage保存到/ Library目录并将文件路径保存到NSUserDefaults。

数据结构是NSUserDefaults - >草稿NSDictionary - >关键 - NSArray。我有很多草稿(就像电子邮件草稿一样)。草稿字典包含一个保存的日期字符串作为NSArray中的键和字符串文件路径。保存过程目前没有任何问题。但因为在NSUserDefaults doc,他们说:

  

默认系统允许   应用程序来自定义其行为   匹配用户的偏好。匹配用户的偏好。

所以,我不知道我的方法是否好,未来任何可能出现的问题?

您是否建议我使用任何简单的解决方案,无需编写太多代码即可。我知道有CoreData,但我不太了解它。是否容易学习和实施?

我不知道这是否会影响某些内存问题,但我希望用户可以保存少于100的草稿。

1 个答案:

答案 0 :(得分:2)

您不希望将任何实际数据保存到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];