iOS:应用程序必须遵循 iOS 数据存储?

Posted

技术标签:

【中文标题】iOS:应用程序必须遵循 iOS 数据存储?【英文标题】:iOS : Apps must follow the iOS Data Storage? 【发布时间】:2011-11-10 09:45:45 【问题描述】:

我的 ios 应用程序被拒绝,因为我使用 /Document 目录来存储下载的图像。

我会将下载的图片移动到/Library/Caches目录下解决我的问题。

但我的 sqLite 数据库也包含用户手动创建的元素。 此文件必须复制到/Library/Caches 目录或/Documents 目录才能被Reviewer 接受?

真诚地, 马克西姆

【问题讨论】:

【参考方案1】:

根据 iOS 存储指南(可在 http://developer.apple.com/icloud/documentation/data-storage/ 找到),您应该将所有用户生成的内容放在 Documents 目录中,并将所有可重新下载的内容放在 Caches 目录中。所以你应该可以把 sqLite 数据库放在那里。

这方面的背景是,从 iOS 5 开始,Documents 目录已备份到 iCloud。由于许多应用程序倾向于将其完整数据存储在那里,iCloud 备份变得相当大,这会占用可用空间并产生网络流量,这反过来又会激怒用户,因为他/她想知道为什么。为了缓解这种情况,Apple 现在似乎更仔细地查看了保存在 Documents 目录中的内容,以及这是否可能是可再生的内容(例如可下载的文件)。

请注意,当设备上的可用空间不足时,操作系统可以并且将会在 iOS 5 上清除 Caches 目录。因此,您的应用不能再假设所有内容都像以前一样存在,而是每次访问缓存中的内容时都必须重新检查。

【讨论】:

所以我会将我的数据库放在 /Document 目录中,并在必要时重新下载 /Library/caches 中的图像文件。非常感谢:-)【参考方案2】:

手动创建的数据可以存储在您的应用目录中。

您可以使用以下代码获取当前目录 -

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

然后附加您的文件名以获取完整路径。

NSString *fileName = [documentsDirectory stringByAppendingPathComponent:@"myfile.format"] ;

【讨论】:

以上是关于iOS:应用程序必须遵循 iOS 数据存储?的主要内容,如果未能解决你的问题,请参考以下文章

应用程序因未遵循 iOS 数据存储指南而被拒绝

我应该遵循 iOS 数据存储指南吗?

制作通用 iOS 应用程序应遵循的初始步骤

iCloud 中保存的意外数据

IOS 5 存储指南

添加 NSURLIsExcludedFromBackupKey 属性后的 iOS 数据存储指南