【问题标题】:Optimize time access to sqlite using coredata使用 coredata 优化对 sqlite 的时间访问
【发布时间】:2011-07-15 16:08:21
【问题描述】:

我正在尝试使用预先生成的 sqlite 文件,该文件在表中包含 10 000 个对象。

我已经通过 iPhone 模拟器在 sqlite 中使用 coredata 创建并添加了对象。

我已将 iPhone Simulator ressource 文件夹(包含 10 000 个对象)中包含的 sqlite 复制并粘贴到我的项目目录中的 ressource 文件夹中。

我在第一次启动我的应用程序时所做的是将这个生成的数据库复制到我在 iphone 上的应用程序文档目录中:

NSBundle * mainBundle = [NSBundle mainBundle];
        NSString *oldPath = [mainBundle pathForResource:@"MyBase" ofType:@"sqlite"];
        NSString *newPath = [[app_delegate applicationDocumentsDirectory] stringByAppendingPathComponent: @"MyBase.sqlite"];
        BOOL copied = [[NSFileManager defaultManager] copyItemAtPath:oldPath toPath:newPath error:&error];
        if (!copied) {
            NSLog(@"Moving database from %@ to %@, error: %@", oldPath, newPath, error);
        }

它工作正常,但我有以下问题: 比较对原始 MyBase.sqlite(在我的设备上创建并填充相同的 10 000 个对象)的访问与新副本,对表的所有访问所花费的时间是正常生成的 MyBase.sqlite 的 3 倍。

不知在模拟器上生成sqlite时,索引属性是否不存在? 我需要帮助!

【问题讨论】:

  • 您是否选中了您正在访问的对象属性的索引复选框?

标签: iphone sqlite optimization core-data time


【解决方案1】:

您使用的是相当常见的技术,通常不会导致任何问题。如果两个商店使用相同的数据模型,Core Data 无法区分刚刚创建的商店和旧商店之间的区别。

我能想到的唯一解释是您使用了两个不同的系统/API 版本,因此存储文件略有不同。如果设备上的版本比模拟器上的版本旧/新,您可能会遇到问题。

这只是一个疯狂的猜测。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-16
    • 2011-07-07
    • 2017-05-09
    • 2013-12-13
    相关资源
    最近更新 更多