gpt4 book ai didi

ios - 如何将 SQLite 表导入 Core Data(SQLite 也是)

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:10:22 24 4
gpt4 key购买 nike

我有一个很大的 XML。如果按一条记录写入数据库,大约需要2分钟。这个 XML 是静态的,它永远不会更新。那么创建 SQLite 数据库并在 Core Data 中导入一个表可能有用吗?我该怎么做?

我看过这个教程(Core Data on iOS 5 Tutorial: How To Preload and Import Existing Data),它没有说如何导入表

最佳答案

从 sqlite 导入相当容易,但恕我直言,文档不足

  1. 打开您的应用并设置核心数据堆栈
  2. 打开您要从中导入内容的遗留 sql 数据库
  3. 获取要导入的数据并遍历所有行。
  4. 为每一行创建一个新的 NSManagedObject 并将其插入到您正在使用的 managedObject 上下文中4a.用值设置它。

使用 FMDB 会是这样的:

NSManagedObjectContext *mom = ... ; //your mom


FMDatabase *db = [FMDatabase databaseWithPath:libraryDatabase];
if(![db open]) {
ddprintf(@"Failed to open database at %@", libraryDatabase);
return;
}

if(![db beginTransaction]) {
ddprintf(@"Failed to start Transaction to update database: %d, %@", db.lastErrorCode, db.lastErrorMessage);
[db close];
return;
}

id sql = @"SELECT modelId,imagePath,fileVolumeUuid FROM RKMaster";
FMResultSet *resultSet = [db executeQuery:sql];
while ([resultSet next]) {
//get row values
NSString *modelId = [row stringForColumn:@"modelId"];
NSString *orgFilename = [row stringForColumn:@"imagePath"];

//new MOC
MyEntity *entity = [mom insertNewObjectForEntity:@"myEntity"];
entity.modelId = modelId;
entity.orgFilename = orgFilename;
}

if(![db commit]) {
ddprintf(@"Failed to commit database transaction: %d,%@", [db lastErrorCode], [db lastErrorMessage]);
}

if(![db close]) {
ddprintf(@"Failed to propertly close database at %@", libraryDatabase);
}

关于ios - 如何将 SQLite 表导入 Core Data(SQLite 也是),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16273654/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com