gpt4 book ai didi

objective-c - 将 100MB XML 文件导入 iOS 核心数据模型

转载 作者:可可西里 更新时间:2023-11-01 17:11:14 26 4
gpt4 key购买 nike

在我的应用中,我需要将一个 100MB 的 xml 文件导入核心数据模型。

到目前为止,我已经导入了一个 100KB 的 xml 文件并且一切正常。但是,不确定导入 100MB xml 需要多长时间。我会在今晚运行它,一会儿……你认为这种方法好吗?

谢谢

NSManagedObjectContext * context = [self managedObjectContext];

// Delete all documents
NSFetchRequest * fetch = [[[NSFetchRequest alloc] init] autorelease];
[fetch setEntity:[NSEntityDescription entityForName:@"Document" inManagedObjectContext:context]];
NSArray * result = [context executeFetchRequest:fetch error:nil];
for (id basket in result)
[context deleteObject:basket];



//Insert documents
TBXML * tbxml = [[TBXML tbxmlWithXMLFile:@"categ_small.xml"] retain];
TBXMLElement * root = tbxml.rootXMLElement;
TBXMLElement * doc = [TBXML childElementNamed:@"doc" parentElement:root];

do {
TBXMLElement * idDoc = [TBXML childElementNamed:@"id" parentElement:doc];
TBXMLElement * titleDoc = [TBXML childElementNamed:@"title" parentElement:doc];
TBXMLElement * descriptionDoc = [TBXML childElementNamed:@"description" parentElement:doc];
TBXMLElement * time = [TBXML childElementNamed:@"time" parentElement:doc];
TBXMLElement * tags = [TBXML childElementNamed:@"tags" parentElement:doc];
TBXMLElement * geo = [TBXML childElementNamed:@"geo" parentElement:doc];
TBXMLElement * event = [TBXML childElementNamed:@"event" parentElement:doc];
TBXMLElement * user = [TBXML childElementNamed:@"user" parentElement:doc];
TBXMLElement * categ = [TBXML childElementNamed:@"categ" parentElement:doc];

NSManagedObject *newDocument = [NSEntityDescription
insertNewObjectForEntityForName:@"Document"
inManagedObjectContext:context];

[newDocument setValue:[TBXML textForElement:idDoc] forKey:@"idDoc"];
[newDocument setValue:[TBXML textForElement:titleDoc] forKey:@"titleDoc"];
[newDocument setValue:[TBXML textForElement:descriptionDoc] forKey:@"descriptionDoc"];
[newDocument setValue:[TBXML textForElement:time] forKey:@"time"];
[newDocument setValue:[TBXML textForElement:tags] forKey:@"tags"];
[newDocument setValue:[TBXML textForElement:geo] forKey:@"geo"];
[newDocument setValue:[TBXML textForElement:event] forKey:@"event"];
[newDocument setValue:[TBXML textForElement:user] forKey:@"user"];
[newDocument setValue:[TBXML textForElement:categ] forKey:@"categ"];

} while ((doc = doc->nextSibling));

更新这是一次性操作,仅在模拟器中运行,不会与最终应用程序一起部署。

最佳答案

我会执行以下步骤:

  • 用 ruby​​ 或 php 写一个转换器 XML->SQLite,或者如果你不是脚本语言的 friend ,那么看看 SQLite Manager,它是一个管理 SQLite 数据库的 Firefox 插件,它能够导入 XML。

  • 按照本教程预填充核心数据以进行运输:How To Preload/Import Existing Data

关于objective-c - 将 100MB XML 文件导入 iOS 核心数据模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5965313/

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