ios - 将 XML 数据解析为核心数据

标签 ios xml swift core-data

我正在尝试从在线 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/

相关文章:

database - 未找到 FIR 数据库

swift - 如何处理基于单元格的 NSOutlineView 中的复选框单击

javascript - SafeAreaView 导致屏幕上出现奇怪的间隙

ios - unity iOS link.xml 位置

ios - 如何将我的移动设备添加到我的 StackDriver 个人资料中?

android - 设置数据绑定(bind)时出现 Kotlin 错误

xml - 如何获取 XML 文件并将其值插入到使用 SSIS 的数据库表中 (SQL Server 2005)

ios - Swift: ScrollView 自动布局

java - 如何创建使用 SAX 解析 xml 的处理程序?

xcode - Swift:为什么我的 completionHandler 闭包返回一个值?