【发布时间】:2011-11-10 09:45:45
【问题描述】:
我的 iOS 应用程序被拒绝,因为我使用 /Document 目录来存储下载的图像。
我会将下载的图片移动到/Library/Caches目录下解决我的问题。
但我的 sqLite 数据库也包含用户手动创建的元素。
此文件必须复制到/Library/Caches 目录或/Documents 目录才能被Reviewer 接受?
真诚地, 马克西姆
【问题讨论】:
我的 iOS 应用程序被拒绝,因为我使用 /Document 目录来存储下载的图像。
我会将下载的图片移动到/Library/Caches目录下解决我的问题。
但我的 sqLite 数据库也包含用户手动创建的元素。
此文件必须复制到/Library/Caches 目录或/Documents 目录才能被Reviewer 接受?
真诚地, 马克西姆
【问题讨论】:
根据 iOS 存储指南(可在 http://developer.apple.com/icloud/documentation/data-storage/ 找到),您应该将所有用户生成的内容放在 Documents 目录中,并将所有可重新下载的内容放在 Caches 目录中。所以你应该可以把 sqLite 数据库放在那里。
这方面的背景是,从 iOS 5 开始,Documents 目录已备份到 iCloud。由于许多应用程序倾向于将其完整数据存储在那里,iCloud 备份变得相当大,这会占用可用空间并产生网络流量,这反过来又会激怒用户,因为他/她想知道为什么。为了缓解这种情况,Apple 现在似乎更仔细地查看了保存在 Documents 目录中的内容,以及这是否可能是可再生的内容(例如可下载的文件)。
请注意,当设备上的可用空间不足时,操作系统可以并且将会在 iOS 5 上清除 Caches 目录。因此,您的应用不能再假设所有内容都像以前一样存在,而是每次访问缓存中的内容时都必须重新检查。
【讨论】:
手动创建的数据可以存储在您的应用目录中。
您可以使用以下代码获取当前目录 -
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
然后附加您的文件名以获取完整路径。
NSString *fileName = [documentsDirectory stringByAppendingPathComponent:@"myfile.format"] ;
【讨论】: