我正在通过swift应用程序中的api调用从服务器获取JSON数据。 因此,我想将其存储到Realm数据库中,再次需要获取以显示在表视图中。
我对Realm数据库一无所知,之后,检查了几个论坛,我对创建Object类有了基本的了解。
因此,我已经安装了Realm pod文件并将该库导入到我的类中。
我的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”
}
}
]
而且我每个 type 关键字都有与api数据不同的模型类保存数据,以显示在 Tableview
中喜欢
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)
}
其余的趋势,热门和技术对象也是如此。
并且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 = ""
}
在MainViewController
类中,
let realmDB = try! Realm()
但是,在这里,我很震惊,如何保存这些storyObj,technology,top, etc
模块数据并提取。
有人可以建议我吗?
答案 0 :(得分:0)
如果要在数据库中添加领域对象,则必须为每个领域对象类定义一个主键。因此,在您可以像这样创建领域对象之后,您需要更改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)
}