2016-10-10 54 views
1

JSONのデータをRealm DBSwiftに書き込む方法に関する情報が見つかりません。私は、サーバーからJSONを取るここでSwiftのRealmにJSONを書き込む方法

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 = "" 
} 

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 
} 

そして、どのように書くための私のデータをRealm DBにクラス

私が持っていますか?

+0

あなたも、[ドキュメント](https://realm.io/docs/swift/latest/)を読みましたか? realm dbにオブジェクトを書き込むことは非常に簡単です – Tj3n

+0

もちろんです。私は試して書くことができることを知っている! realm.write { json = tryしよう! JSONSerialization.jsonObject(データ、オプション:[]) realm.create(City.self、値:json、更新:true) }それは私には役に立ちません – Zhanserik

+0

'newsJson'を配列に集めます。 'newsObjects')、次に' realm.add(newsObjects) 'を呼び出してそれらをすべてRealmに追加します。 – Michael

答えて

5

この:

func insertOrUpdate(news: News) { 
    try! realm.write({ 
      realm.add(news) 
     }) 
} 

が、それはあなたがオブジェクトを継承せずにモデルを作成し、より良いです:

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 = "" 
} 

、その後の解析JSONの後にあなたがNewsRealmでinsertOrUpdateと地図データを呼び出します。

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) 
     }) 
} 
+0

素晴らしい!それは仕事です!ありがとうございました! – Zhanserik

+0

こんにちは!データベース内のデータを更新する方法は? – Zhanserik

1

更新用です。あなたのオブジェクトがデータベースに追加して新しいが提出された場合

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, update: true)   }) 

} 

が、更新は、あなたのオブジェクトがあること、データベースにあります。

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 = "" 

     override static func primaryKey() -> String? { 
     return "newsID" 
     } 
} 

して、更新のために:あなたは主キーにnewsRealmでメソッドを定義する必要があります。

私の英語のため申し訳ありません;)

関連する問題