很可能您将“map.sqlite”存储在应用程序的 Documents 目录中。Sqlite 文件通常被复制到 Documents 目录,以便它们是可写的。但是 iOS 默认会尝试将 Documents 目录中的所有文件复制或备份到 iCloud(如果 iCloud 备份已打开)。因此,根据 Apple 的指南,您可以执行以下操作,以便 iCloud 不会从您的 Documents 目录备份您的数据库文件。
您可以调用以下函数将“map.sqlite”的路径作为 NSURL 传递:
NSURL *url = [NSURL fileURLWithPath:yourSQLitePath];
[self addSkipBackupAttributeToItemAtURL:url];
该功能在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;
}
此功能确保文件(以 URL 形式提供)不被 iCloud 备份。
您还可以将数据库文件放在 Documents 目录内的单独目录中,并通过调用此函数将该整个子目录标记为“不备份”。希望能帮助到你。