- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我目前正在一个测试项目中试用 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 吗?
谢谢你的帮助!
最佳答案
尝试这样的事情。您只想从列表中删除镜头,而不是将其从 Realm 中删除。
try! realm.write {
filteredResults.forEach { lens in
if let index = listToSearch[0].lensList.index(of: lens) {
listToSearch[0].lensList.remove(at: index)
}
}
}
请注意,这将从该特定列表中删除所有与您的滤镜匹配的镜头。
编辑:更新以反射(reflect) Realm 的自定义 List
类。
if let
是必需的,因为如果在列表中找不到对象,index(of:)
可能会返回 nil
。此外,我们必须一次处理一个项目,而不是先获取所有索引,因为删除一个项目会导致索引数组错误。
关于swift - 从 LinkingObjects 列表中删除特定对象 - Realm Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48552209/
给定以下示例 Realm 类: 汽车 class Car: Object { dynamic var make = "" let owner = List() } 人 class Pers
根据 Realm Swift 文档,我声明了一些类 Car 和 Tour,如下所示: import RealmSwift class Car: Object { dynamic var id =
我不知道如何在以下情况下使用LinkingObject。 class Message: Object{ ... dynamic fromUser : User?
我有一个 Book 类和一个 ReadingSession 类,其关系声明如下: public class Book: Object { // (…) var readingSessi
我有一个模型,它通过对自身的引用来引用所有对象。我想我可以使用这个属性,LinkingObjects(fromType: Outfit.self, property: "clothes")作为List
我的代码中有 5 个级别(或更多)链接 Realm 对象。项目,包括章节,包括任务,包括附件和... 我在其他一些问题中发现我应该获取链接对象,如下所示: private let sections =
我有一个 Android 应用程序,它使用 SQLite 及其 json1 扩展作为其数据库后端。虽然这可行,但操作 JSON 所需的 SQL 非常难以理解,甚至更难维护。因此,我目前正在尝试使用 R
如果我理解正确的话,那么只有当我访问该属性时才会加载 LinkingObjects?! Lists关系是写在realm数据库里的?! 那么如果我使用列表,对关系的访问会更快吗?也许它会使用更多存储空间
我有一个 Item 数据类,每个 Item 都有一个父项和许多子项,它们是来自父属性的 LinkingObjects。简化版: @objcMembers class Item: Object {
我有一个 Realm 模型类,我需要它是可解码的,这样我就可以从 JSON 序列化它并将它保存到数据库中。每个PortfolioItem与一个 Product 相关联在某些时候我需要去 Portfol
我定义了两个非常基本的 Object 如下: class Language: Object { dynamic var id: String = "" //"english", "chines
更新到 Cocoapods 1.0.0 后,我的 Realm Swift (1.03.1) 架构中出现以下错误。 错误: 使用未解析的标识符“LinkingObjects” 下面的示例: import
我需要列出一个对象的所有 LinkingObjects 类型的属性。 class Dogs: Object { dynamic var name: String = "" dynami
根据Realm documentation for v0.102.0 ,这就是您创建反向关系的方式: 人 class Person: Object { // ... other propert
我目前正在一个测试项目中试用 Realm,我一直在努力从列表中删除特定对象。 LensDBObject和 ListDBObject . LensDBObject 包含镜头列表,ListDBObject
我是 iOS 开发和 Realm 的新手,在代码优先数据库构建方面有不错的经验。 Routine 和 Workout 类之间存在一对多关系,其中一个 Routine 可能包含许多不同的锻炼。这是我的类
When I try to access var `inspection` in code block "Code from version 0.100.0" it returns nil Code
我是一名优秀的程序员,十分优秀!