2014-12-04 53 views
0

我的公司在App Store中有一個iOS應用。我們正在做一個徹底的拆解,並從頭開始,但推動它作爲一個更新,因爲舊的應用程序甚至不會構建。它有很多依賴關係。從以前的iOS應用版本檢索數據

在舊的應用程序中,用戶擁有存儲在sqlite數據庫中的收藏項。新應用程序將它們存儲在plist中或使用sqlite,如果這意味着我們不會丟失數據。有什麼辦法將這些數據遷移到新的應用程序?

此鏈接讓我覺得這是可能的,但我不使用鈦:Titanium - Retrieving SQLite Data from previous version of iOS App

我目前檢查看看,當我啓動應用程序數據庫存在,它總是記錄「NO」。任何幫助將非常感激!

NSString *databaseName = @"my_client_database.sqlite"; 
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,  NSUserDomainMask, YES); 
NSString *documentsDir = [documentPaths objectAtIndex:0]; 
NSString *databasePath = [documentsDir stringByAppendingPathComponent:databaseName]; 

if (![[NSFileManager defaultManager] fileExistsAtPath:databasePath]){ 
    NSLog(@"NO"); 
}else{ 
    NSLog(@"YES"); 
} 
+0

我想你已經做了三重檢查數據庫路徑在完全相同的方式創建(區分事項,My_Client_Database.sqlite和my_client_database.sqlite是iOS設備上的兩個不同的文件),它是在舊的應用程序? – 2014-12-05 00:43:18

+0

這意味着該文件不存在,您沒有磁盤上的數據庫。 – Andy 2014-12-05 01:24:55

+0

我做了三重檢查。路徑完全相同。理論上,它應該存在。記錄正在寫入前一版本的數據庫,所以我知道它在那裏。 – Ryan 2014-12-05 14:05:37

回答

1

OK的人誰需要從以前的應用程序中查詢數據:

  1. 點擊窗口>設備
  2. 選擇設備
  3. 選擇您的應用
  4. 點擊齒輪
  5. Click Show Container

如果您對以前的版本一無所知,這可讓您準確查看文件的位置。

  • 下載容器
  • 通過終端,那麼你可以檢查SQLite數據庫
  • 現在你知道你在工作與您可以在相應的目錄中查找。事實證明,我的應用程序支持。

    NSFileManager *fileManager = [[NSFileManager alloc] init]; 
    NSArray *pathsList = [fileManager URLsForDirectory:NSApplicationSupportDirectory inDomains:NSUserDomainMask]; 
    NSURL *directoryURL = [pathsList objectAtIndex:0]; 
    NSString *databasePath = [[directoryURL URLByAppendingPathComponent:@"my_client_database.sqlite"] absoluteString]; 
    

    在這一點上,您可以查詢sqlite數據庫並適當地創建新的記錄!