【发布时间】:2018-07-11 03:44:34
【问题描述】:
我目前正在一个测试项目中试用 Realm,并且一直在努力从列表中删除特定对象。 LensDBObject 和 ListDBObject。 LensDBObject 包含镜头列表,ListDBObject 是现有镜头的列表。一个镜头可以在多个列表中,我想从特定列表中删除特定镜头,但如果从其他列表中则不删除。
下面是我的两个类:
@objcMembers class LensDBObject: Object {
dynamic var id = UUID().uuidString
dynamic var manufacturer = ""
dynamic var series = ""
dynamic var serial = ""
dynamic var isSelected = false
override static func primaryKey() -> String? {
return "id"
}
let objects = LinkingObjects(fromType: ListDBObject.self, property: "lensList")
}
@objcMembers class ListDBObject: Object {
dynamic var listName = ""
let lensList = List<LensDBObject>()
}
下面是我在我想要的列表中查找特定镜头的代码。返回的值是我所期望的。
let listToSearch = realm.objects(ListDBObject.self).filter("listName == %@", "List 542")
print(listToSearch)
let filteredResults = listToSearch[0].lensList.filter("manufacturer == %@ AND series == %@ AND serial == %@", "Panavision" , "Primo Prime", "407")
print(filteredResults)
但是,当我尝试删除filteredResults 时,它会从lensDBOject 中完全删除它。我只是希望能够从这个特定列表中删除这个特定镜头。
try! realm.write {
realm.delete(filteredResults)
}
我尝试使用 for 循环来获取列表中镜头的索引,然后直接从中删除它。但它仍然会到处删除镜头。
我错过了什么吗?我应该使用一对多关系而不是 LinkingObject 吗?
感谢您的帮助!
【问题讨论】:
标签: swift realm rlmlinkingobjects