Swift 3中Realm对象过滤:筛选isInvited为1的Work对象
当然可以实现!
完全没问题,Realm的查询API非常强大,轻松就能筛选出isInvited字段值为1的Work对象。这里给你两种常用的实现方式:
方式一:使用字符串格式的谓词(兼容性好)
这种方式适用于所有Swift版本,直接通过字符串指定筛选条件:
do { // 先获取Realm实例 let realm = try Realm() // 执行筛选:获取所有isInvited等于1的Work对象 let invitedWorks = realm.objects(Work.self).filter("isInvited == 1") // 遍历处理结果(示例) for work in invitedWorks { print("受邀用户ID: \(work.id), 姓名: \(work.firstName ?? "") \(work.lastName ?? "")") } } catch { print("初始化Realm失败: \(error.localizedDescription)") }
方式二:使用类型安全的键路径(Swift 5.7+推荐)
如果你用的是Swift 5.7及以上版本,更推荐这种方式,它能在编译期检查字段名是否正确,避免拼写错误:
do { let realm = try Realm() let invitedWorks = realm.objects(Work.self).filter(\.isInvited == 1) // 后续处理逻辑和上面一致 } catch { print("初始化Realm失败: \(error.localizedDescription)") }
补充说明
Realm的查询是延迟加载的,也就是说filter方法执行时并不会立刻从数据库读取数据,只有当你开始遍历结果、访问具体对象属性的时候,才会真正执行查询,这样能保证查询的性能效率。
内容的提问来源于stack exchange,提问作者Irwan Madness
相关产品推荐
相关产品推荐

