我正在尝试查看在Cocoa中存储大量文本(超过255个字符)的最佳方法。作为Core Data的忠实粉丝,我认为有一种有效的方法可以做到这一点。但是,我觉得'string'是这种类型的错误数据类型。有人有这方面的任何信息吗?我没有在Core Data中看到BLOB的选项
答案 0 :(得分:5)
嗯,你不能很好地压缩文本或将其存储为必须翻译的二进制文件,否则你放弃SQLite的查询速度(因为所有文本存储为二进制编码的数据)必须被读取进入内存,翻译/解压缩,然后搜索)。否则,您必须镜像(并维护)Core Data存储中的纯文本表示以及功能更全面的内容。
混合解决方案怎么样?核心数据存储除实际文本之外的所有文本文本本身在文件系统上存档为每个条目一个文件的核心数据。每个文件都以其在Core Data存储中的唯一标识符命名。这样,搜索可以做两件事(当然是在后台):在Core Data商店中搜索标题,日期等内容;搜索文件(甚至可能使用Spotlight)进行内容搜索。如果存在文件搜索匹配,则其文件名用于在核心数据中查找匹配记录,以便在应用程序的UI中显示。
这使您可以利用特定于应用的内部搜索条件和 Spotlight的程序化异步搜索。这是一个更多的工作,被授予,但如果你在谈论很多文字,我想不出更好的方法。
答案 1 :(得分:2)
BLOB数据类型在Core Data中称为“二进制数据”。正如middaparka所指出的那样,Core Data Programming Guide为如何处理核心数据中的二进制数据提供了一些指导。根据您的要求,使用BLOB的替代方法是仅存储对磁盘上文件的引用。
答案 2 :(得分:0)
我建议阅读Apple的Core Data Programming Guide(特别是“核心数据性能”部分)。这特别提到了BLOB(参见“大数据对象(BLOB)”部分)并给出了一些虽然含糊不清的指导原则。