很可能您正在將「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目錄內的單獨目錄中,並通過調用此函數將整個子目錄標記爲「不備份」。希望能幫助到你。
來源
2014-04-08 12:33:19
mrh
做一些搜索 - 從右邊顯示的相關問題列表開始。關於這個話題有很多現有的討論。 – rmaddy