我正在尝试从在线xml文件中获取数据并将其放入我的核心数据中。
我可以成功地检索数据,甚至可以将其放入核心数据中,但似乎只有最后检索到的源被存储。 这里是我正在尝试检索的xml文件的示例。
解析器代码示例:
基本上,我应该在我的核心数据中获得三个新条目,但只有最后一个(15 * 7问题)被存储。
我可以成功地检索数据,甚至可以将其放入核心数据中,但似乎只有最后检索到的源被存储。 这里是我正在尝试检索的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)
}
}
Core Data代码示例:
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问题)被存储。
while
循环中,你一遍又一遍地为同一个对象上的相同键设置值。tmp.setValue(tmp_xml.objectAtIndex(0).valueForKey("text"), forKey: "question")
然后tmp.setValue(tmp_xml.objectAtIndex(1).valueForKey("text"), forKey: "question")
:tmp
只会有最后一次迭代(1)的 "question" 键。 - Eric Aya