Core data NSManagedObject是否具有文件URL?

Core data NSManagedObject是否具有文件URL?,core-data,nsmanagedobject,Core Data,Nsmanagedobject,我有一个NSManagedObject*对象写入到NSManagedObject上下文。它具有键/值,其中包括一个“数据”键,该键返回~5-10mb大小的NSData*值。如何获取存储值的url/文件路径?没有这样的文件url。按照您设计此托管对象及其属性的方式,数据与其他所有内容一起存储在持久性存储中。默认情况下,核心数据将所有内容存储到一个平面持久性存储文件中,通常是SQLite。因此,磁盘上没有保存指定给对象的数据的单独文件 如果愿意,可以为模型中的各个属性启用.allowsExterna

我有一个NSManagedObject*对象写入到NSManagedObject上下文。它具有键/值,其中包括一个“数据”键,该键返回~5-10mb大小的NSData*值。如何获取存储值的url/文件路径?

没有这样的文件url。按照您设计此托管对象及其属性的方式,数据与其他所有内容一起存储在持久性存储中。

默认情况下,核心数据将所有内容存储到一个平面持久性存储文件中,通常是SQLite。因此,磁盘上没有保存指定给对象的数据的单独文件


如果愿意,可以为模型中的各个属性启用
.allowsExternalBinaryDataStorage
。这允许核心数据在合适的情况下将数据推入磁盘上的单独文件中


需要注意的是,这是出于性能优化目的。Core Data不会公开任何API来告诉您磁盘上文件的URL。

allowsExternalBinaryDataStorage对于减小SQLite数据库文件的大小也很有用。还有一点需要注意:allowsExternalBinaryDataStorage也会对性能产生负面影响。例如,在执行迁移时,存储中的每个对象都会加载一次,在最简单的情况下,只需复制到目标存储。所以你有很多非线性的磁盘访问。如果迁移对您来说并不重要,那么这并不适用,因为在大多数情况下,您可以轻松解决此类问题。