【问题标题】:How to load database at App Start up?如何在 App 启动时加载数据库?
【发布时间】:2015-06-21 13:23:20
【问题描述】:

我正在开发一个加载机场数据库的应用程序。 我将数据库“.JSON”文件放在 Xcode 的应用程序中。 一切正常,除了加载数据库的时间很长。

我使用这种方式从 JSON 文件中获取一个数组。

-(void)readDataFromFile
{
    NSString * filePath =[[NSBundle mainBundle] pathForResource:@"airports" ofType:@"json"];

    NSError * error;
    NSString* fileContents =[NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error];


    if(error)
    {
        NSLog(@"Error reading file: %@",error.localizedDescription);
    }


    self.airports = (NSArray *)[NSJSONSerialization JSONObjectWithData:[fileContents dataUsingEncoding:NSUTF8StringEncoding] options:0 error:NULL];



    NSLog(@"%@",self.airports);



}

我的问题

如何在应用程序加载时移动这个等待时间? 简而言之,我需要在启动时加载数据库!

【问题讨论】:

  • 你为什么一直在加载和解析静态 JSON 文件?为您的应用程序提供预加载的 SQLite 数据库文件会更有效。这样你就不需要每次都解析数据,查询效率会高得多,而且你不需要整个数据库都在内存中。
  • @rmaddy 谢谢!我想过这个问题 !你能告诉我关于如何获得这个预加载的 Sqlite Db 和查询示例的“按代码”执行的步骤吗?
  • 这个问题太宽泛了。我只是在为你指出一个更好的方向。做一些关于使用 SQLite 的研究。如果您遇到特定问题,请针对该特定问题发布一个新问题。
  • @rmaddy 我知道如何使用 SQLite 但不知道如何将 JSON 数据库与 SQlite 链接,有什么帮助吗?
  • @rmaddy 如果我将 JSON 文件转换为 Sqlite db,它会工作吗?

标签: objective-c json nsarray startup


【解决方案1】:

最早可以在您的应用委托类中的application didFinishLaunchingWithOptions 方法中执行此操作。

【讨论】:

  • 我需要应用程序中间的数据库!我如何将它加载到 Appdelegate 文件中,以便将其链接到应用程序中的 Tableview 或其他 Viewcontrollers ?
  • 嗯,有多种模式可以做到这一点。你宁愿不在 Plist 文件中包含这些数据吗?加载时间会更容易和更快吗?
  • 我可以将 .JSON 转换为 .Plist “我没问题”
  • 这将是您最简单的方法 - 因为您可以在任何需要的地方访问它。祝你好运。
  • @Tander 使用 plist 代替 JSON 有何帮助?如果有的话,情况会更糟。解析 XML 的效率可能不如解析 JSON。
猜你喜欢
  • 2021-02-04
  • 2015-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多