使用存储到域中的Alamofire解析Json数据并显示到表中工作正常。什么时候向多个对象添加到领域应用程序崩溃
杰森:{
"worldpopulation":
[
{
"rank":1,"country":"China",
"population":"1,354,040,000",
"flag":"http://www.androidbegin.com/tutorial/flag/china.png"
},
{
"rank":2,"country":"India",
"population":"1,210,193,422",
"flag":"http://www.androidbegin.com/tutorial/flag/india.png"
},
{
"rank":3,"country":"United States",
"population":"315,761,000",
"flag":"http://www.androidbegin.com/tutorial/flag/unitedstates.png"
},
{
"rank":4,"country":"Indonesia",
"population":"237,641,326",
"flag":"http://www.androidbegin.com/tutorial/flag/indonesia.png"
},
]
}
我第一次只在表格视图中显示国家/地区名称 模型类
class Item : Object
{
@objc dynamic var name = ""
}
接下来,当我将该类添加到下一个对象后,我可以将填充添加到表视图中
class Item : Object
{
@objc dynamic var name = ""
@objc dynamic var population = ""
}
这是代码更新并显示数据
var realm: Realm!
var objectsArray: Results<Item> {
get {
return realm.objects(Item.self)
}
}
解析数据
func jsonparsing()
{
let url = URL(string:"http://www.androidbegin.com/tutorial/jsonparsetutorial.txt")
realm = try! Realm()
Alamofire.request(url!, method: .post, parameters: nil, encoding: JSONEncoding.default, headers: nil)
.responseJSON(completionHandler: {
response in
let res = response.result.value as! [String:Any]
let arrayvalue = res["worldpopulation"] as! [[String:AnyObject]]
for imagearray in arrayvalue
{
let item = Item()
try! self.realm.write {
item.name = imagearray["country"] as! String
item.population = imagearray["population"] as! String
self.realm.add(item)
}
self.reloaddata()
}
}).resume()
}
如何将多个对象更新到领域,显示到表视图中
答案 0 :(得分:0)
将现有对象添加或更新到Realm中。 如果对象具有主键,则仅传递true以进行更新。如果Realm中没有对象具有相同的主键值,则插入该对象。否则,使用任何更改的值更新现有对象。
你应该使用
self.realm.add(item,update:true)
您应该将主键添加到对象
答案 1 :(得分:0)
您必须在班级中提供主键。
来自领域文档的信息https://realm.io/docs/swift/latest/#objects-with-primary-keys
如果您的模型类包含主键,则可以使用Realm 根据主键智能地更新或添加对象 值使用Realm()。add(_:update :)。
// Creating a book with the same primary key as a previously saved book
let cheeseBook = Book()
cheeseBook.title = "Cheese recipes"
cheeseBook.price = 9000
cheeseBook.id = 1
// Updating book with id = 1
try! realm.write {
realm.add(cheeseBook, update: true)
}
如果已存在主键值为“1”的Book对象 数据库,然后该对象将被更新。如果没有 存在,然后将创建并添加一个全新的Book对象 数据库。