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 数据存储?的主要内容,如果未能解决你的问题,请参考以下文章