如何在Swift中将JSON写入Realm

Zha*_*rik 3 xcode json realm ios swift

我无法找到信息如何我写JSON数据到我Realm DB在Swift.

我有课:

class News: Object {
    dynamic var newsID: String = ""
    dynamic var newsTitle: String = ""
    dynamic var newsFullText: String = ""
    dynamic var newsAutor: String = ""
    dynamic var newsCommentCount: String = ""
    dynamic var newsSeenCount: String = ""
    dynamic var newsDate: String = ""
    dynamic var newsCategory: String = ""
}
Run Code Online (Sandbox Code Playgroud)

在这里,我JSON从服务器:

func parseJSONData(data: NSData) -> [News] {

    do {
        let temp: NSString = NSString(data: data, encoding: NSUTF8StringEncoding)!
        let myNSData = temp.dataUsingEncoding(NSUTF8StringEncoding)!

        let jsonResult = try NSJSONSerialization.JSONObjectWithData(myNSData, options: NSJSONReadingOptions.MutableContainers) as! NSDictionary
        let jsonNews = jsonResult["posts"] as! [AnyObject]
        for jsonnewes in jsonNews {
            let newsJson = News()
            newsJson.newsTitle = jsonnewes["post_title"] as! String
            newsJson.newsAutor = jsonnewes["author_name"] as! String
            newsJson.newsFullText = jsonnewes["full_text"] as! String
            newsJson.newsID = jsonnewes["id"] as! String
            newsJson.newsCategory = jsonnewes["menu_category_name"] as! String
            newsJson.newsDate = jsonnewes["create_date"] as! String
            newsJson.newsSeenCount = jsonnewes["review"] as! String
            newsJson.newsCommentCount = jsonnewes["comment_count"] as! String
            newsItems.append(newsJson)
        }
    } catch {
        print(error)
    }
    return newsItems
}
Run Code Online (Sandbox Code Playgroud)

以及如何将我的数据写入Realm DB?

Far*_*rzi 9

这个 :

func insertOrUpdate(news: News) {
    try! realm.write({
            realm.add(news)
        })
}
Run Code Online (Sandbox Code Playgroud)

但是最好不要从对象继承而创建模型:

class News {
   var newsID: String = ""
   var newsTitle: String = ""
   var newsFullText: String = ""
   var newsAutor: String = ""
   var newsCommentCount: String = ""
   var newsSeenCount: String = ""
   var newsDate: String = ""
   var newsCategory: String = ""
}



class NewsRealm: Object {
    dynamic var newsID: String = ""
    dynamic var newsTitle: String = ""
    dynamic var newsFullText: String = ""
    dynamic var newsAutor: String = ""
    dynamic var newsCommentCount: String = ""
    dynamic var newsSeenCount: String = ""
    dynamic var newsDate: String = ""
    dynamic var newsCategory: String = ""
}
Run Code Online (Sandbox Code Playgroud)

然后在解析json之后调用insertOrUpdate并使用NewsRealm映射数据:

func insertOrUpdate(news: News) {
    let realm = try! Realm()
    try! realm.write({
        let newsRealm = NewsRealm()
        newsRealm.newsTitle = news.newsTitle
        newsRealm.newsAutor = news.newsAutor
        newsRealm.newsFullText = news.newsFullText
        .
        .
        .
        realm.add(newsRealm)
        })
}
Run Code Online (Sandbox Code Playgroud)