使用Swift将NSDictionary保存在核心数据中

我确实在这里搜索了许多答案,这些答案带有与我相同的标题,它们大多位于Obj-C中和/或已过时。所以请耐心等待...

我需要将API响应保存在Core Data中以供离线使用。

以下是回复:

{
"data": [{
    "id": 1,"title": "Lorem Ipsum","subtitle": "<p>Deutsches Ipsum Dolor deserunt dissentias berlin et. Tollit argumentum ius an. Eichh\u00f6rnchen lobortis elaboraret per ne,nam Erbsenz\u00e4hler probatus pertinax,impetus eripuit aliquando Meerschweinchen sea. Diam scripserit no vis,Brezel meis suscipit ea. Eam ea Fernweh eleifend,ad blandit voluptatibus sed,Schnaps eius consul sanctus vix. Cu Aufschnitt legimus veritus vim<\/p><p>Deutsches Ipsum Dolor deserunt dissentias berlin et. Tollit argumentum ius an. Eichh\u00f6rnchen lobortis elaboraret per ne,Schnaps eius consul sanctus vix. Cu Aufschnitt legimus veritus vim<\/p>","text": "<p>Deutsches Ipsum Dolor deserunt dissentias berlin et. Tollit argumentum ius an. Eichh\u00f6rnchen lobortis elaboraret per ne,"created_at": "2019-11-11 09:52:11","updated_at": "2019-11-11 09:52:11","deleted_at": null
}]

}

我可以通过以下方式使用WKWebKit查看此响应:

class WebVC: UIViewController {

var selectedIndex = 0
var detailsArray = [NSDictionary]()

@IBOutlet weak var webView: WKWebView!

override func viewDidLoad() {
    super.viewDidLoad()
    setupPage()
}

private func setupPage() {
    self.showAnimate()
    self.view.backgroundColor = UIColor.black.withAlphaComponent(0.8)
    showWebViewData()
}

func showWebViewData() {
    let title = "<h2>\(detailsArray[selectedIndex]["title"] ?? "")</h2>";
    let htmlstr = "\(title) \(detailsArray[selectedIndex]["subtitle"] ?? "") \(detailsArray[selectedIndex]["text"] ?? "")"
    print(htmlstr)
    let str = "<!DOCTYPE html> <html> <head> <link href='https://fonts.googleapis.com/css?family=Fira Sans Condensed' rel='stylesheet'> <style> body {font-family: 'Fira Sans Condensed';} .bg-white { background: rgba(255,255,0.6); border-radius:40px; padding: 20px; }html { padding: 10px;} h2 {font-size:40pt; color:#707070;} p{font-size:26pt; {font-family: 'Fira Sans',sans-serif;}.bold{font-weight:bold;}.italic{font-style: italic;}.oblique{font-style: oblique;}} strong{font-size:30pt}</style> </head> <body><div class='bg-white'>\(htmlstr) </div> </body> </html>"
    webView.loadHTMLString(str,baseURL: nil)
    webView.backgroundColor = .clear
    webView.isOpaque = false
}

但是我在将响应保存到Core Data时遇到了麻烦。 我创建了一个具有一个Transformable属性的实体,以保存整个实体,但是失败了。我还尝试创建三个属性:title,subtitle和text作为String,但是它也失败了。

    func saveInfoInCoreData(Emeregnecyinfos: [EmergencyInformation] ) {

    // Deletes Information Before Adding New One
    delete Info()
    for info in Emeregnecyinfos {
        let entity = NSEntityDescription.entity(forEntityName: "Info",in: Context)
        let information = NSManagedObject(entity: entity!,insertInto: PrivateContext)

        information.setvalue(info.title,forKey: "title")
        information.setvalue(info.subtitle,forKey: "subtitle")
        information.setvalue(info.text,forKey: "text")

        do {
            try PrivateContext.save()
        } catch {
            print("Failed Saving Information!")
        }
    }
}

任何帮助将非常感谢代码示例。谢谢!

CHGXING 回答:使用Swift将NSDictionary保存在核心数据中

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3123659.html

大家都在问