核心数据和 iOS 数据存储指南

Posted

技术标签:

【中文标题】核心数据和 iOS 数据存储指南【英文标题】:Core Data and iOS Data Storage Guidelines 【发布时间】:2012-04-23 18:26:30 【问题描述】:

我们有一个带有 Core Data 的应用,后备存储是一个 SQLite 数据库。

它包含关键数据(即它需要始终离线可用)。

它当前存储在 Documents 目录中,因此由于 ios 数据存储指南而被拒绝。

解决方案似乎是使用“不备份”标签对其进行标记。

但是,我还没有看到任何关于此的指南。即我应该手动将此文件标记为“不备份”还是应该启用一些核心数据选项?

【问题讨论】:

Apple 出于同样的原因拒绝了我的应用,你能说说你是如何克服它的吗? 一段时间后再次提交,它通过了。 5.0.1 和 5.1 之间的一些变化。从 5.1 开始,NSURLIsExcludedFromBackupKey 和 kCFURLIsExcludedFromBackupKey 文件属性完成了这项工作。 【参考方案1】:

您必须自己手动完成,这里是指南

https://developer.apple.com/library/ios/ipad/#qa/qa1719/_index.html

【讨论】:

这是 Apple 建议的文件之一。我跟着它,用“不备份”属性标记了相关文件,重新提交并再次被拒绝。这就是我发布这个问题的原因,因为我不确定我是否做对了。有没有办法检查您是否在特定文件上设置了属性?【参考方案2】:

在 iOS 5.1 或更高版本中,最好使用新的 NSURLIsExcludedFromBackupKeykCFURLIsExcludedFromBackupKey 文件属性,而不是 setxattr (iOS 5.0.1 compatible)。

- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL assert([[NSFileManager defaultManager] fileExistsAtPath: [URL path]]); NSError *error = nil; BOOL 成功 = [URL setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey 错误:&错误]; 如果(!成功) NSLog(@"从备份 %@ 中排除 %@ 的错误", [URL lastPathComponent], error); 返回成功;

有关详细信息,请参阅 "App Backup Best Practices" section of the iOS App Programming Guide。

【讨论】:

以上是关于核心数据和 iOS 数据存储指南的主要内容,如果未能解决你的问题,请参考以下文章

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

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

由于 iOS 数据存储指南问题,我的应用拒绝了 Appstore

如何使用 Core Data 和 iOS 5 存储指南?

IOS 5 存储指南

IOS 应用被拒绝:2.23 - 应用必须遵循 iOS 数据存储指南