我的應用剛剛被蘋果拒絕,原因如下:單獨的用戶
2.23
我們發現您的應用不符合iOS的數據存儲 準則,這是根據用戶要求App Store評論指南。
特別是,我們發現在發佈和/或內容下載時,您的 應用程序存儲10.3 MB。要檢查您的應用程序有多少數據存儲:
- 安裝並運行你的應用程序
- 進入設置> iCloud中>存儲&備份>管理存儲
- 如有必要,請點擊「顯示所有的應用程序」
- 檢查您的應用程序的存儲
iOS的數據存儲準則表明,只有該 用戶創建使用你的應用程序,例如,文檔,新文件,內容編輯,電子tc。, 可能存儲在/ Documents目錄中 - 並由iCloud備份。
我所做的是,我在大約10 MB的資源文件夾中提供數據庫,並在初始啓動時將該數據庫複製到庫路徑(請參閱下面的代碼)。當在設備設置中啓動後查看我的應用程序設置時,它實際上說,文檔&數據文件夾包含此10 MB數據。應用程序在安裝完成後不再需要該數據庫,因此我只是嘗試從資源文件夾中刪除數據庫,而使用removeItemAtPath完成複製時。但似乎有一個許可問題。
在這裏,我用填充在最初啓動數據庫的代碼:
// Copy the database from the app resource, if it is not already existing in the library path
- (void) copyDatabaseIfNeeded {
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory , NSUserDomainMask, YES);
NSString *documentsDir = [paths objectAtIndex:0];
NSString *dbPath = [documentsDir stringByAppendingPathComponent:@"abiliator.sqlite3"];
BOOL success = [fileManager fileExistsAtPath:dbPath];
if(!success) {
NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"abiliator.sqlite3"];
success = [fileManager copyItemAtPath:defaultDBPath toPath:dbPath error:&error];
if (!success) {
NSLog(@"Failed to create writable database file with message '%@'.", error);
}
else {
success = [fileManager removeItemAtPath:defaultDBPath error:&error];
if (!success) {
NSLog(@"Failed to remove the source database file with message '%@'.", error);
}
}
}
}
研究有關問題小時後,我實際上是非常肯定的,那我沒有做錯什麼都。根據Apple文檔,庫路徑是存儲可更新文件的位置。特別是如果數據要被備份和隱藏/不向用戶公開。這兩種情況都適用於我的應用程序,我希望數據可以備份,而且我不希望用戶看到我的數據庫。所以圖書館似乎完全正確。我唯一能想到的就是資源目錄中數據庫的大小。我可以通過壓縮來減少它。但是有什麼限制?審稿人和文檔都不能告訴我任何具體的內容。
那麼究竟是什麼錯誤?如果資源目錄不適合存儲我的源數據庫以進行初始設置,那麼可以在我的項目中使用哪個其他目錄?
非常感謝任何提示。 勒
ios 5中刪除方法的一些變化。我認爲你刪除舊的風格。請參閱:http://developer.apple.com/library/ios/#releasenotes/General/iOS50APIDiff/index.html – Hector 2012-04-26 04:18:28
謝謝,但我必須使用舊式的removeItemAtPath,因爲我支持iOS 4.2及更高版本。但是,我想由於某種原因,Apple設計這些源文件的位置是隻讀的。 – renesteg 2012-04-26 07:16:39