我正在尝试从在线 xml 文件中获取数据并将其放入我的核心数据中。
我可以成功检索数据,甚至可以将其放入核心数据中,但似乎只存储了最后检索到的提要。
Here是我要检索的 xml 文件的示例。
解析器代码示例:
func parser(parser: NSXMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) {
if (elementName as NSString).isEqualToString("question") {
if !xml_tmp1.isEqual(nil) {
elements.setObject(xml_tmp1, forKey: "text")
}
if !xml_tmp2.isEqual(nil) {
elements.setObject(xml_tmp2, forKey: "answer0")
}
if !xml_tmp3.isEqual(nil) {
elements.setObject(xml_tmp3, forKey: "answer1")
}
if !xml_tmp4.isEqual(nil) {
elements.setObject(xml_tmp4, forKey: "answer2")
}
if !xml_tmp5.isEqual(nil) {
elements.setObject(xml_tmp5, forKey: "answer3")
}
tmp_xml.addObject(elements)
}
}
核心数据代码示例:
func temp_func() {
var n: Int = tmp_xml.count
var i: Int = 0
var appDel: AppDelegate = (UIApplication.sharedApplication().delegate as! AppDelegate)
var context: NSManagedObjectContext = appDel.managedObjectContext!
var tmp = NSEntityDescription.insertNewObjectForEntityForName("Questions", inManagedObjectContext: context) as! NSManagedObject
while (i != br) {
tmp.setValue(tmp_xml.objectAtIndex(i).valueForKey("text"), forKey: "question")
tmp.setValue(tmp_xml.objectAtIndex(i).valueForKey("answer0"), forKey: "answer_1")
tmp.setValue(tmp_xml.objectAtIndex(i).valueForKey("answer1"), forKey: "answer_2")
tmp.setValue(tmp_xml.objectAtIndex(i).valueForKey("answer2"), forKey: "answer_3")
tmp.setValue(tmp_xml.objectAtIndex(i).valueForKey("answer3"), forKey: "answer_4")
i++
}
context.save(nil)
}
所以基本上,我应该在我的核心数据中获得三个新条目,但只存储最后一个(15 * 7 问题)。
最佳答案
我认为你只是在 U 核心数据和 U setValue 中创建一个条目而不是保存它。所以核心数据中只保存最后一个Entry。你可以在 while 循环中创建条目。像这样看到它可以工作吗?
func temp_func() {
var n: Int = tmp_xml.count
var i: Int = 0
var appDel: AppDelegate = (UIApplication.sharedApplication().delegate as! AppDelegate)
var context: NSManagedObjectContext = appDel.managedObjectContext!
while (i != br) {
var tmp = NSEntityDescription.insertNewObjectForEntityForName("Questions", inManagedObjectContext: context) as! NSManagedObject
tmp.setValue(tmp_xml.objectAtIndex(i).valueForKey("text"), forKey: "question")
tmp.setValue(tmp_xml.objectAtIndex(i).valueForKey("answer0"), forKey: "answer_1")
tmp.setValue(tmp_xml.objectAtIndex(i).valueForKey("answer1"), forKey: "answer_2")
tmp.setValue(tmp_xml.objectAtIndex(i).valueForKey("answer2"), forKey: "answer_3")
tmp.setValue(tmp_xml.objectAtIndex(i).valueForKey("answer3"), forKey: "answer_4")
i++
}
context.save(nil)
}
关于ios - 将 XML 数据解析为核心数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30326077/