Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- let realm = try! Realm()
- func getData(){
- let dataURL = "https://api.myjson.com/bins/r9vzj"
- guard let url = URL(string: dataURL) else {return}
- URLSession.shared.dataTask(with: url) { (data, response, error) in
- guard let data = data else {return}
- do {
- //let json = try JSONSerialization.jsonObject(with: data, options: .allowFragments)
- //print("nHERE IS THE JSON: ..",json)
- let feeds = try JSONDecoder().decode(RealmFeeds.self, from: data)
- //print(feeds)
- try! self.realm.write {
- self.realm.add(feeds)
- }
- let articles = try JSONDecoder().decode([RealmArticles].self, from: data)
- for article in articles {
- try! self.realm.write {
- self.realm.add(article)
- }
- }
- }catch let error {
- print(error)
- }
- }.resume()
- }
- import Foundation
- import Realm
- import RealmSwift
- class RealmFeeds: Object, Decodable {
- @objc dynamic var feedTitle: String = ""
- var feedArticles = List<RealmArticles>()
- private enum feedCodingKeys: String, CodingKey {
- // Customizing key name
- case feedTitle = "title"
- case articles
- }
- convenience init(feedTitle: String, feedArticles: List<RealmArticles>){
- self.init()
- self.feedTitle = feedTitle
- self.feedArticles = feedArticles
- }
- convenience required init(from decoder: Decoder) throws {
- let container = try decoder.container(keyedBy: feedCodingKeys.self)
- let feedTitle = try container.decode(String.self, forKey: .feedTitle)
- let articlesArray = try container.decode([RealmArticles].self, forKey: .articles)
- let articlesList = List<RealmArticles>()
- articlesList.append(objectsIn: articlesArray)
- self.init(feedTitle: feedTitle, feedArticles: articlesList)
- }
- required init() {
- super.init()
- }
- required init(value: Any, schema: RLMSchema) {
- super.init(value: value, schema: schema)
- }
- required init(realm: RLMRealm, schema: RLMObjectSchema) {
- super.init(realm: realm, schema: schema)
- }
- }
- import Foundation
- import Realm
- import RealmSwift
- class RealmArticles: Object, Codable {
- @objc dynamic var articleTitle: String = ""
- @objc dynamic var website: String = ""
- @objc dynamic var authors: String = ""
- @objc dynamic var date: String = ""
- @objc dynamic var content: String = ""
- @objc dynamic var imageUrl: String = ""
- private enum ArticlesCodingKeys: String, CodingKey {
- // Customizing some key names
- case articleTitle = "title"
- case website
- case authors
- case date
- case content
- case imageUrl = "image_url"
- }
- convenience init(articleTitle: String, website: String, authors: String, date: String, content: String, imageUrl: String){
- self.init()
- self.articleTitle = articleTitle
- self.website = website
- self.authors = authors
- self.date = date
- self.content = content
- self.imageUrl = imageUrl
- }
- convenience required init(form decoder: Decoder) throws {
- let container = try decoder.container(keyedBy: ArticlesCodingKeys.self)
- let articleTitle = try container.decode(String.self, forKey: .articleTitle)
- let website = try container.decode(String.self, forKey: .website)
- let authors = try container.decode(String.self, forKey: .authors)
- let date = try container.decode(String.self, forKey: .date)
- let content = try container.decode(String.self, forKey: .content)
- let imageUrl = try container.decode(String.self, forKey: .imageUrl)
- self.init(articleTitle: articleTitle, website: website, authors: authors, date: date, content: content, imageUrl: imageUrl)
- }
- required init() {
- super.init()
- }
- required init(value: Any, schema: RLMSchema) {
- super.init(value: value, schema: schema)
- }
- required init(realm: RLMRealm, schema: RLMObjectSchema) {
- super.init(realm: realm, schema: schema)
- }
- }
Add Comment
Please, Sign In to add comment