2010-10-26 54 views
2

我對核心數據並不熟悉,所以我想知道是否有可能將不同的預填充sqlite數據庫加載到核心數據以及性能如何?可能使用不同的預填充sqlite數據庫的核心數據?

我有一個客戶端將數據存儲在遠程服務器上的多個sqlite數據庫中。每個sqlite數據庫將基本上代表應用程序中的一個組,並且可能有10到100個不同的組,每個組都有自己的小型sqlite數據庫。所有數據庫都有相同的模式和表結構,可以遠程更新,一次只能使用一個數據庫。

在這種情況下使用核心數據有可能甚至是可取的嗎?我既可以:

  1. 從遠程服務器下載的源碼分貝,然後根據需要直接訪問分貝使用SQL或加載每個分貝,
  2. 下載SQLite的分貝,並使用核心數據加載每個db和工作這樣呢?雖然從我讀過的核心數據使用一堆專有的表格等來跟蹤數據庫,所以不可能只交換不同的數據庫,即使它們具有相同的模式?

任何想法? thx

回答

2

是的,我現在就這樣做。如果需要,我可以給你更多的例子,但這裏是我做的:

  1. 在Mac上通過sqlite3創建數據庫。
  2. 將在應用程序的包
  3. 在應用程序啓動數據庫,如果數據庫不在應用程序的文檔文件夾,從包複製到那裏
  4. 從應用程序的包中使用該數據庫。

或者,您可以從網上下載,而不是執行第2步和第3步 - 但我只會在非常大的情況下執行此操作,並且在應用程序加載時可能不會立即可用。

內的applicationDidFinishLaunching:

NSFileManager *fm = [[NSFileManager alloc] init]; 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *mapPath = [documentsDirectory stringByAppendingPathComponent: @"datafile.sqlite" ];  
if (![fm fileExistsAtPath:mapPath]) { 
    // Does Not Exist!! 
    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"datafile" ofType:@"sqlite" inDirectory:@"datafiles"]; 
    NSData *myData = [NSData dataWithContentsOfFile:filePath]; 
    if (myData) 
     [fm createFileAtPath:mapPath contents:myData attributes:nil]; 
} 
1

在過去的幾個星期我和我的同事都在討論的預填充服務器上的CoreData店的最佳途徑。我們發現Objective-C web框架Bombax和 想要儘快嘗試。
這個想法是,Bombax服務器可以使用所有可用的框架,包括CoreData。
不足之處:服務器必須是一個mac。

+0

聽起來很有趣,會檢查出來。 – James 2010-10-27 17:08:10

+0

不要猶豫,投票 – vikingosegundo 2010-10-27 17:11:48

相關問題