jma*_*s89 11 storage objective-c ios route-me
通过将应用程序上传到应用程序商店给了我这个错误.
2.23:应用必须遵循iOS数据存储指南,否则将被拒绝
我一直在看错是我正在使用的其中一个文件不符合存储要求.
更具体地说,它是一个用于使用route-me库加载地图离线模式的sqlite.
我正在使用sqlite在离线模式下加载地图,似乎这张地图在iCloud中存储为备份,所以我正在跳过存储限制.
不知道如何说这个副本不是在iCloud中创建的.
代码如下:
[[RMDBMapSource alloc] initWithPath: @ "map.sqlite"];
Run Code Online (Sandbox Code Playgroud)
文件大小为23MB
有任何想法吗?
mrh*_*mrh 23
很可能您将"map.sqlite"存储在应用程序的Documents目录中.Sqlite文件通常被复制到Documents目录,以便它们是可写的.但是,默认情况下,iOS会尝试将Documents目录中的所有文件复制或备份到iCloud(如果启用了iCloud备份).因此,根据Apple的指导原则,您可以执行以下操作,以便iCloud不会从您的Documents目录备份您的数据库文件.
您可以调用以下函数将"map.sqlite"的路径作为NSURL传递:
NSURL *url = [NSURL fileURLWithPath:yourSQLitePath];
[self addSkipBackupAttributeToItemAtURL:url];
Run Code Online (Sandbox Code Playgroud)
该功能在Apple中提供为:
- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL
{
assert([[NSFileManager defaultManager] fileExistsAtPath: [URL path]]);
NSError *error = nil;
BOOL success = [URL setResourceValue: [NSNumber numberWithBool: YES]
forKey: NSURLIsExcludedFromBackupKey error: &error];
if(!success){
NSLog(@"Error excluding %@ from backup %@", [URL lastPathComponent], error);
}
return success;
}
Run Code Online (Sandbox Code Playgroud)
此功能可确保iCloud不备份文件(以URL提供).
您还可以将数据库文件放在Documents目录中的单独目录中,并通过调用此函数将整个子目录标记为"不备份".希望能帮助到你.
归档时间: |
|
查看次数: |
6987 次 |
最近记录: |