2013-06-02 86 views
3

我們有一個使用Core Data存儲數據的應用程序。一些數據來自服務器,可變大小,雖然通常很小,但也可能很大(幾兆字節)。我們使用啓用了「允許外部存儲」的二進制數據字段來存儲此數據。如何防止備份外部文件的核心數據數據庫?

我們的應用因違反規則2.23而被拒絕,因爲我們存儲的數據可以從服務器重新下載,並且不會將其標記爲從備份中排除。

好吧,夠公平的,所以我想標記我們的數據庫被排除在備份之外。標記數據庫本身很容易:

BOOL succ = [storeURL setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:&error]; 
    if (!succ) { 
     NSLog(@"Error setting %@ to be excluded from backups: %@", storeURL, error); 
    } 

但是,這隻包括SQLite文件本身。當核心數據存儲的外部文件中,將它們存儲在一個單獨的目錄:

.../Private Documents/MyDatabase.sqlite 
.../Private Documents/.MyDatabase_SUPPORT/_EXTERNAL_DATA/(files here) 

我需要標誌外部存儲的文件不換備份。我可以在.MyDatabase_SUPPORT文件夾上設置NSURLIsExcludedFromBackupKey,但我沒有看到任何支持的方式來獲取此文件夾的名稱。

我可以自己構建它,但我不喜歡根據這個實現細節。有沒有任何支持的方法來找出核心數據在哪裏存儲數據庫的外部文件?

回答

3

創建一個子目錄,在該子目錄中創建數據庫,然後在子目錄中設置NSURLIsExcludedFromBackupKey屬性。這樣,子目錄內的任何內容(包括隱藏的SUPPORT目錄)都將從備份中排除。