从以前的ios应用程序版本中检索数据

时间:2014-12-04 22:34:49

标签: ios objective-c nsfilemanager

我的公司在App Store中有一个iOS应用程序。我们正在做一个完整的拆解并从头开始,但推动它作为更新,因为旧的应用程序甚至不会构建。它很老,有很多依赖。

在旧版应用中,用户收藏了存储在sqlite数据库中的项目。新的应用程序将它们存储在plist中或使用sqlite,如果这意味着我们不会丢失数据。有没有办法将这些数据迁移到新的应用程序?

此链接让我觉得有可能,但我没有使用Titanium:Titanium - Retrieving SQLite Data from previous version of iOS App

我目前正在检查数据库是否存在,当我启动应用程序时,它始终记录"否"。任何帮助都将非常感激!

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");
}

1 个答案:

答案 0 :(得分:1)

对于需要查询先前应用程序数据的任何人都可以:

  1. 点击窗口>设备
  2. 选择您的设备
  3. 选择您的应用
  4. 点击齿轮
  5. 单击“显示容器”
  6. 如果您对以前的版本一无所知,这可以让您准确查看文件的位置。

    1. 下载容器
    2. 通过终端,您可以检查sqlite数据库
    3. 现在您知道自己在使用什么,可以查看相应的目录。事实证明我的应用程序支持。

      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数据库并相应地创建新记录!