2015-03-03 114 views
0

我有崩潰的在App Store審覈啓動,但完全否則工作在設備和模擬器的應用程序。以下是具體細節。應用程序崩潰 - 完美的作品上的設備

該應用爲IOS 7寫入,並且在IOS 8.x中被測試我象徵着來自Apple的崩潰日誌,並且它首次嘗試訪問存儲在預填充的Core Data sqlite數據庫中的信息。

此代碼的數據庫副本啓動:

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator 
{ 
    if (__persistentStoreCoordinator != nil) 
    { 
     return __persistentStoreCoordinator; 
    } 

    NSURL *storeURL = [[self applicationDocumentsDirectory]  URLByAppendingPathComponent:@"CC.sqlite"]; 
    NSArray *paths =  NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *storePath = [documentsDirectory  stringByAppendingPathComponent: @"CC.sqlite"]; 

    // Check if the sqlite store exists 
    if (![[NSFileManager defaultManager] fileExistsAtPath:storePath]) { 
     NSLog(@"sqlite db not found... copy into place"); 

     // copy the sqlite files to the store location. 
     NSString *bundleStore = [[NSBundle mainBundle] pathForResource:@"CC" ofType:@"sqlite"]; 
     [[NSFileManager defaultManager] copyItemAtPath:bundleStore  toPath:storePath error:nil]; 

    } 
    else { 
     NSLog(@"Already exists"); 
    } 
    NSError *error = nil; 
    __persistentStoreCoordinator = [[NSPersistentStoreCoordinator  alloc] initWithManagedObjectModel:[self managedObjectModel]]; 
    NSDictionary *options = @{ NSSQLitePragmasOption :  @{@"journal_mode" : @"DELETE"} }; 


    if (![__persistentStoreCoordinator  addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL  options:options error:&error]) 
    { 
       NSLog(@"error %@, %@", error, [error userInfo]); 

    } 

    return __persistentStoreCoordinator; 
} 

我們不會在任何問題上運行這幾百倍各種iOS設備(由幾個不同的人),但總能得到一個啓動在蘋果崩潰。

從崩潰日誌中可以明顯看出,應用程序(在應用商店評論期間)試圖通過核心數據訪問一個不存在的sqlite數據庫,但我不知道爲什麼這隻發生在Apple上,而且爲什麼我不能重現錯誤。我不確定還有哪些其他信息可以添加到問題中,但可以根據需要快樂地進行更新。

感激地收到任何意見....

+0

他們可以做一個測試,看看你是如何處理的數據庫中不存在?也許這是設計。 – 2015-03-03 03:52:24

+0

可能的,但對於完全依賴於db的存在的應用程序...似乎是一個有爭議的問題。我不知道在這樣的災難性故障的生產環境.... – jmf1205 2015-03-03 03:57:03

+0

你檢查正被提交給蘋果,以確認該數據庫被包含在捆綁的情況下怎麼辦? – Paulw11 2015-03-03 05:07:30

回答

0

我會回答這裏我自己的問題,但在試圖解決這個問題我做了更改代碼,使發佈的代碼不是非常有幫助。

我不得不把啓動數據庫操作中完成塊。這涉及將所有內容移動到我的初始啓動視圖控制器中,並在數據庫初始化時禁用我的標籤欄按鈕。

發生了什麼是正在要求在覈心數據SQLite數據庫的某些項目,然後才完全預裝,因此崩潰。

更多塊可以發現here

相關問題