【问题标题】:CoreData and the "Allows External Storage" optionCoreData 和“允许外部存储”选项
【发布时间】:2015-01-20 16:43:52
【问题描述】:

我正在编写有关 CoreData 的教程,他们谈到了“允许外部存储”选项。文档说“启用后,Core Data 会根据每个值试探性地决定是否应将数据直接保存在数据库中或将 URI 存储到它为您管理的单独文件中。您不能根据内容进行查询如果使用此选项,则为二进制数据属性。”我理解第一部分,但我不明白“如果使用此选项,则无法根据二进制数据属性的内容进行查询”是什么意思。我觉得这是很重要的东西,但我无法理解。 “您不能根据二进制数据的内容进行查询”,这是什么意思?如果这是我的英语不好或其他什么,我不知道,但我无法弄清楚。 该教程是 Ray Wenderlich 的教程系列丛书中的“Core Data by Tutorials”。我强烈推荐!

【问题讨论】:

  • 为了将来的读者参考,发布您正在阅读的特定教程的链接可能会有所帮助。

标签: ios core-data


【解决方案1】:

您存储的 NSData 图像是带有 exif 标头的 jpeg 数据。

如果您将数据存储在数据库中,您可以使用与所述 exif 数据匹配的谓词:例如类似于(伪)“jpgedData CONTAINS author: dominik”

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

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

【讨论】:

  • 哦,好吧,我明白了,基本上你不能做一些你甚至不应该经常做的事情。凉爽的! :)
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-16
      • 1970-01-01
      • 1970-01-01
      • 2015-08-17
      • 2016-01-01
      • 1970-01-01
      • 2020-04-27
      • 1970-01-01
      相关资源
      最近更新 更多