[英]How to add and update values in objects using Realm (Swift)?
我下面有两个课程。 我想对这些对象执行(添加,更新和删除)之类的操作。
CheckOutImageList类是包含图像的对象的数组,而CheckOutDetail类是包含图像对象的对象。
class CheckOutImageList: Object {
@objc dynamic var imageUrl = ""
@objc dynamic var imageName = "test"
@objc dynamic var isProfile = Bool()
@objc dynamic var imageDesc = ""
override static func primaryKey() -> String? {
return "imageName"
}
}
class CheckOutDetail: Object {
@objc dynamic var taskId = 0
var imageList = List<CheckOutImageList>()
@objc dynamic var remarks = ""
@objc dynamic var isFollowUp = Bool()
@objc dynamic var followDate = ""
@objc dynamic var followTime = ""
override static func primaryKey() -> String? {
return "taskId"
}
}
我可以对CheckOutDetail类执行添加和更新操作,但需要帮助来添加,更新和删除图像列表数组。
您可以将CheckOutImageList
元素附加到对象CheckOutDetail
。
尝试这个 :
let realmIn = try! Realm()
var checkOutDetail = CheckOutDetail()
checkOutDetail.taskId = 1
checkOutDetail.imageList = "imageList"
checkOutDetail.isFollowUp = "isFollowUp "
checkOutDetail.followTime = "followTime"
// You can use for to append multiple elements to list
let newCheckOutImageList = CheckOutImageList()
newCheckOutImageList.imageUrl = "url"
nweCheckOutImageList.imageName = "imageName"
newCheckOutImageList.isProfile = "isProfile"
newCheckOutImageList.imageDesc = "imageDesc"
checkOutDetail.imageList.append(newCheckOutImageList)
try! realmIn.write {
realmIn.add(checkOutDetail, update: true)
}
为了解决此问题,我对对象进行了一些更改。 我所做的只是为CheckOutDetails和CheckOutImageList创建两个单独的对象,如下所示:
class CheckOutImageList: Object {
@objc dynamic var taskId = 0
@objc dynamic var imageUrl = ""
@objc dynamic var imageName = ""
@objc dynamic var isProfile = Bool()
@objc dynamic var imageDesc = ""
override static func primaryKey() -> String? {
return "imageName"
}
}
class CheckOutDetail: Object {
@objc dynamic var taskId = 0
@objc dynamic var remarks = ""
@objc dynamic var isFollowUp = Bool()
@objc dynamic var followDate = ""
@objc dynamic var followTime = ""
override static func primaryKey() -> String? {
return "taskId"
}
}
//Code to update old data or add new image data in the CheckOutImageList Object
if self.checkImageNameExist(imageName: imgDetail.fileName) {
try! realm.write {
realm.add(obj, update: true) //obj is of type CheckOutImageList
}
} else {
try! realm.write {
realm.add(obj)
}
}
//Function will return true if primary key already exist else return false
func checkImageNameExist(imageName: String) -> Bool {
return realm.object(ofType: CheckOutImageList.self, forPrimaryKey: imageName) != nil
}
并使用CheckOutDetails中的taskId作为外键来获取相同ID的详细信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.