CoreData 和 "Allows External Storage" 选项

CoreData and the "Allows External Storage" option

我正在做一个关于 CoreData 的教程,他们谈到了 "Allows External Storage" 选项。文档说 "When enabled, Core Data heuristically decides on a per-value basis if it should save the data directly in the database or store a URI to a separate file which it manages for you. You cannot query based on the contents of a binary data property if you use this option." 我理解第一部分,但我不明白 "You cannot query based on the contents of a binary data property if you use this option" 是什么意思。我觉得这很重要,但我无法理解。 "You cannot query based on the contents of a binary data",什么意思?我不知道是不是我的英语不好还是什么,但我想不通。 本教程来自 Ray Wenderlich 的教程系列丛书 "Core Data by Tutorials"。我强烈推荐!

image 您存储的 NSData 是带有 exif header.

的 jpeg 数据

如果将数据存储在数据库中,则可以使用谓词匹配所述 exif 数据:例如像(伪)"jpgedData CONTAINS author: dominik"

如果将其存储为单独的文件,则该查询将不起作用,因为数据实际上并不在数据库中

[请注意,这是解释性伪代码,我真的想不出一个实际/有用的例子]

这意味着如果您为 属性 启用该选项,则在获取对象时不能在 NSPredicate 中使用该 属性。提取请求是一个查询,当您使用谓词时,您是根据对象是否与谓词匹配来提取对象。如果 属性.

允许外部存储,那将不起作用

好的,我想我明白了。基本上您不能使用图像的原始元数据来查找特定图像,因为您无权访问原始数据。您只能访问 URI。对我来说听起来合乎逻辑且公平,因为您可以提取元数据,并将其存储在您的 CoreData 模型中,然后再将图像保存为可转换图像(如果需要)。