2010-02-09 70 views
4

請告訴我:如果我在我的iPhone應用程序中使用核心數據,我基本上有兩個文件。 mydatamodel.xcdatamodel文件,然後我需要一個.sqlite文件。 Apple提供了以下代碼片段:核心數據會爲我創建持久性存儲文件嗎?

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

    NSString *appDirPath = [self applicationDocumentsDirectory]; 
    NSString *storeFileName = @"mystore.sqlite"; 
    NSURL *storeUrl = [NSURL fileURLWithPath:[appDirPath stringByAppendingPathComponent:storeFileName]]; 

    NSError *error = nil; 
    persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]]; 

    if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:nil error:&error]) { 
     NSLog(@"Error: %@, %@", error, [error userInfo]); 
     abort(); 
    } 

    return persistentStoreCoordinator; 
} 

如果文件不可用,是否會創建該文件?

[persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:nil error:&error] 

我的應用程序不需要初始數據,因爲它會在用戶啓動應用程序時下載它。

回答

7

是的,Core Data將在您的應用程序委託中第一次啓動應用程序之後創建SQLite數據庫。

+0

完美。謝謝。如果我已經提供該文件,該怎麼辦? Afaik我無法將它直接發送到文檔目錄中。所以我會在嘗試創建它之前先複製它,對吧? – dontWatchMyProfile 2010-02-09 22:21:17

+1

正確。你的應用包中會有一個發佈版本並將其複製。 – gerry3 2010-02-09 22:22:28

+0

如果我在開發者網站上做了iOS教程,並且我的應用程序崩潰,說沒有可用的持久存儲。我怎麼能解決這個問題? – iProRage 2012-02-07 02:31:46

2

是的。如果Apple數據庫不存在,那麼Apple模板提供的鍋爐板核心數據堆棧代碼將創建該數據庫文件。

+0

如果我在開發者網站上做了iOS教程,並且我的應用程序崩潰,說沒有可用的持久存儲。我怎麼能解決這個問題? – iProRage 2012-02-07 02:32:57

1

是的,該方法在給定位置添加指定類型的新持久性存儲,並返回新的存儲。 Here is the documentation

+0

如果我在開發者網站上爲iOS做了教程,並且我的應用程序崩潰,說沒有可用的持久存儲。我怎麼能解決這個問題? – iProRage 2012-02-07 02:32:50

相關問題