存储大笔记内容 - 目标-c

时间:2013-08-02 06:24:07

标签: iphone ios objective-c file-io file-storage

我正在制作一个笔记应用程序,但此应用程序不会是传统的笔记应用程序。该应用程序将由我公司的员工和工程师团队在我公司使用。 音符内容很大,因为包含一些数学表达式。此外,文件必须作为文本和pdf文件发送到Dropbox。

我想知道哪种方法最适合存储大数据内容:

1-简单地将备注内容写入文档目录

中的文件(如note1.txt)

我正在使用此功能来编写文件:

-(IBAction)writeFile:(id)sender
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *fileNameData=[NSString stringWithFormat:@"%@.txt",fileName.text];
    NSString *filePath = [documentsDirectory stringByAppendingPathComponent:fileNameData];

    NSString *str = fileContent.text;

    [str writeToFile:filePath atomically:TRUE encoding:NSUTF8StringEncoding error:NULL];
} 

2-或者将文件内容存储在数据库中并在用户想要将备注发送到Dropbox并将此创建的文件发送到Dropbox时创建文件?

之前我已创建了笔记记录应用,但在此版本中,文件会很大,而且我担心性能。

更新

我做了一些试验。我尝试使用这两种技术编写和读取相同的字符串;核心数据和文件。

从Core Data读取字符串大约需要16秒,使用stringWithContentsOfFile方法从文件读取大约需要5秒。

我知道结果不是很准确,但我猜核心数据对我来说不太合适。 如果我错了,请纠正我。

3 个答案:

答案 0 :(得分:1)

这应该使用核心数据Core Data Usage完成,并且为了好处,请阅读这个问题Why should I use Core Data for my iPhone app?

我自己制作了一个Notes App并使用了核心数据,它运行正常。希望这会有所帮助。

编辑: 或者点击此链接与Data Storage guidelines相关联。它包括Apple提供的所有类型的指南。

答案 1 :(得分:0)

核心数据对于设置和工作非常困难。您是否拥有非常大的数据集或需要在文件之间建立实体关系?

如果不是,我只会有一个包含一个简单对象的字典或数组,该对象包含有关该文件的元数据(最后访问时间,标题,文件位置等),然后我将加载此字典并在表格视图中使用它用于选择文件。

文件本身可以是数据目录中磁盘上的松散文件。为了提高保存的性能,只需复制字符串,然后使用GCD异步写出。当用户选择一个文件再次打开时,使用GCD加载它并显示一个小的进度条。如果这些文件很小,它将接近即时加载。

答案 2 :(得分:0)

CoreData比读取/写入文件更快。但是,当您写入文件时,您并不担心执行。将文件发送到Dropbox时,您担心性能有多频繁?如果这样做不像每天一次,那么文本文件可能比coredata或sqlite更好。

相关问题