Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c iOS核心数据:何时可以重新创建数据?_Objective C_Ios_Cocoa Touch_Core Data - Fatal编程技术网

Objective c iOS核心数据:何时可以重新创建数据?

Objective c iOS核心数据:何时可以重新创建数据?,objective-c,ios,cocoa-touch,core-data,Objective C,Ios,Cocoa Touch,Core Data,我的iOS应用程序已在审核中,但被拒绝。最后,它被拒绝了,因为我的核心数据数据库(sqlite)位于/Documents文件夹中。我知道,这个文件夹应该只被使用,因为我的应用程序无法重新创建数据。我之所以选择把它放在那里,是因为我数据库中的一个实体包含一个属性,告诉我给定的新闻是否已被读取。无法重新创建此信息。这还不足以将数据库放在/Documents文件夹中吗 另一件事是,我的应用程序的当前版本不使用此值来可视化新闻项是否已被读取。那么,我是否应该告诉审查小组关于此属性和参数的信息,以及为什么

我的iOS应用程序已在审核中,但被拒绝。最后,它被拒绝了,因为我的核心数据数据库(sqlite)位于/Documents文件夹中。我知道,这个文件夹应该只被使用,因为我的应用程序无法重新创建数据。我之所以选择把它放在那里,是因为我数据库中的一个实体包含一个属性,告诉我给定的新闻是否已被读取。无法重新创建此信息。这还不足以将数据库放在/Documents文件夹中吗


另一件事是,我的应用程序的当前版本不使用此值来可视化新闻项是否已被读取。那么,我是否应该告诉审查小组关于此属性和参数的信息,以及为什么我认为应该将其放置在文档文件夹中?还是应该将其移动到/Library/Cache/?

应用程序审查小组希望您将数据分开。将可重新创建的部分存储在缓存文件夹中,将无法重新创建的内容存储在文档文件夹中。如果文档中有一些东西理论上可以重新创建,没有人会注意到标题或日期戳,但是长文本文档、视频、音频或图像应该保存在缓存文件夹中,如果以后可以再次下载的话

有几种不同的方法可以做到这一点:

  • 将下载的内容存储在缓存文件夹中,并仅将内容的文件名放在核心数据数据库中(或从其他内容计算文件名,如下载内容的URL的SHA-1哈希)。确保您的代码将重新下载缓存中不存在的任何内容

  • 使用两个核心数据存储和一个存储协调器。请注意,您不能将实体的属性拆分为两个存储区,因此可能需要将一些实体拆分为两半。也不能创建从一个存储中的对象到另一个存储中的对象的关系,因此必须存储对象ID URI。有关更多详细信息,请参阅《核心数据编程指南》中的“交叉存储关系”


  • 无论您做什么,请记住,iOS可能会随时清除您的缓存文件夹。准备好让缓存文件夹中的文件消失;如果出现这种情况,您应该根据用户的请求重新下载文件。

    我认为第二种解决方案最适合我的问题。然而,我在尝试连接两个核心数据模型时遇到了一些问题。你知道能给我解释一下的指南吗?