Как сохранить массив словарей в базе данных Realm в Swift - PullRequest
0 голосов
/ 10 октября 2018

Я получаю данные JSON с сервера по вызову API в быстром приложении.Итак, я хочу сохранить это в базе данных Realm и снова нужно извлечь, чтобы показать в виде таблицы.

Я понятия не имею о базе данных Realm. После того, как я проверил несколько форумов, у меня появилась основная идея для создания класса Object.

Итак, я установил файл модуля Realm и импортировал эту библиотеку в мои классы.

Мои данные JSON

[{
"type": "story",
"story": 

{
"author-name": "",
"headline": "Quotes ",
"summary": "Best quotes of Muhammad Ali",
"hero-image": "https://image”
}
},
{
"type": “Trending”,
"story": 
    {
    "author-name": "",
    "headline": "Quotes ",
    "summary": "Best quotes of Muhammad Ali",
    "hero-image": "https://image”
    }
    },
    {
    "type": “Technology”,
    "story": 

    {
    "author-name": "",
    "headline": "Quotes ",
    "summary": "Best quotes of Muhammad Ali",
    "hero-image": "https://image”
    }
    },
    {
    "type": “Top”,
    "story": 

    {
    "author-name": "",
    "headline": "Quotes ",
    "summary": "Best quotes of Muhammad Ali",
    "hero-image": "https://image”
    }
    }
    ]

И у меня есть каждый тип *Ключевое слово 1011 * имеет различные сохраненные данные класса модели из данных API для отображения в Табличное представление

как

let storyObj = StoryModule()
let trending = StoryModule()
let technology = StoryModule()
let stotopryObj1 = StoryModule()

, и я сохраняю каждое значение ключа для каждого тип

if abc.type == "story" {
    let storyObj = abc.story
    storyObj.authorname = storyObj?.authorname
    storyObj.heroimage = storyObj?.heroimage
    storyObj.headline = storyObj?.headline
    storyObj.summary = storyObj?.summary
    self.treningStoriesList.append(storyObj)
}

То же самое для остальных объектов Trending, Top и Technology.

, а модуль Realm:

import RealmSwift

class DemoInfo: Object {
    @objc dynamic var category = ""
    let items = List<DemoList>()
}

class DemoList : Object {
    @objc dynamic var authorName = ""
    @objc dynamic var imageUrl = ""
    @objc dynamic var summary = ""
    @objc dynamic var headLine = ""
}

И In MainViewControllerкласс,

let realmDB = try! Realm()

Но, здесь меня поразило, Как сохранить эти storyObj,technology,top, etc данные модуля и извлечь их.

Кто-нибудь может мне предложить?

1 Ответ

0 голосов
/ 10 октября 2018

Если вы хотите добавить объект области в вашу базу данных, вы должны определить первичный ключ для каждого класса объектов области.Итак, вам нужно изменить свой JSON-файл, после того как вы сможете создать свои объекты области следующим образом:

DemoObject.swift

import RealmSwift

class DemoObject: Object {

    @objc dynamic var id: String = ""
    @objc dynamic var type: String = ""
    @objc dynamic var subObject: SubObject?

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

SubObject.swift

import RealmSwift

class SubObject: Object {

    @objc dynamic var id: String = ""
    @objc dynamic var authorName: String = ""
    @objc dynamic var imageUrl: String = ""
    @objc dynamic var summary: String = ""
    @objc dynamic var headLine: String = ""

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

Затем вы можете использовать эти коды, чтобы добавить свою базу данных.

let realm = try! Realm()

let demo = DemoObject()
demo.id = "1"

let sub = SubObject()
sub.id = "1"
sub.authorName = "Author Name"
sub.headLine = "Head Line"
sub.summary = "image Url"

demo.subObject = sub

try! realm.write {
    realm.add(demo, update: true)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...