2012-08-12 94 views
2

我在我的iOS應用程序中使用coreData。可能的是,用戶添加,刪除數據到數據庫中。 我必須提供默認數據(一些不同的數據集)。 目前,我正在通過首次啓動應用程序來創建數據庫。我從csv文件中讀取數據並用它創建數據庫。 csv位於應用程序沙箱中; coreData(managedDocument)在ApplicationDocument中(在運行時創建...)。coredata - 傳送/設置默認數據

它適用於我 - 但我問我,蘋果是否允許,如果我將應用程序推到AppStore?

回答

2

這種方法沒有什麼錯,它不能成爲拒絕的理由。還有另一種方式來做到這一點。您可以按照現在的方式創建數據庫,複製.sqlite文件並將其作爲默認數據庫提供。然後在應用第一次運行時複製它。下面的代碼將做到這一點:

NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent: @"YourDBName.sqlite"]; 
    if (![fileManager fileExistsAtPath:storeURL.path]) { 
     NSString *defaultStorePath = [[NSBundle mainBundle] pathForResource:@"YourDBName" ofType:@"sqlite"]; 
     if (defaultStorePath) { 
      [fileManager copyItemAtPath:defaultStorePath toPath:storeURL.path error:NULL]; 
     } 
    } 

通過這種方法,你不會需要包括你csv文件在你的包。

+0

我想到了這個解決方案;用一些@#ifdef DEBUG @刪除創建時的代碼,並按照你描述的方式使用sqlite。 – Thomas 2012-08-12 14:46:44

+0

您還需要記住在歸檔應用程序之前取消選中「csv」形式的目標,因爲您不再需要它了。 – Adam 2012-08-12 14:50:09

+0

你是什麼意思取消選中?如果我提供的sqlite文件,我必須刪除csv?是的,當然 – Thomas 2012-08-12 15:34:11

0

是的,蘋果確實允許運送默認填充的數據庫。 執行此操作的標準方法是在捆綁軟件中發送缺省數據庫,然後在啓動時檢查應用程序文檔目錄中是否有數據庫,如果該數據庫不存在,則將數據庫從您的捆綁軟件複製到文檔目錄。