Swift中从Realm数据库过滤对象及代码审核咨询
在Swift中使用Realm过滤匹配多条件的对象
嘿,你的这段代码其实已经找对方向啦!咱们来聊聊它的合理性,以及可以优化的小细节:
你的现有代码是可行的
你写的过滤语句 "id == 2 && user_id == 4" 完全符合Realm的查询语法逻辑,确实能精准筛选出id等于2且user_id等于4的data类型对象,遍历打印的逻辑也没问题——Realm的objects(_:)返回的Results集合本身就支持直接遍历。
可以试试更类型安全的写法
为了避免字符串查询语句里的拼写错误(比如把user_id写成userId),推荐两种更稳妥的写法:
方式1:使用NSPredicate
let predicate = NSPredicate(format: "id == %d && user_id == %d", 2, 4) let filteredItems = realm.objects(data.self).filter(predicate) for item in filteredItems { print(item) }
用占位符%d(如果是字符串就用%@)传入参数,能减少硬编码字符串带来的错误。
方式2:链式过滤
把多条件拆成多次filter调用,可读性会更强:
let filteredItems = realm.objects(data.self) .filter("id == 2") .filter("user_id == 4") for item in filteredItems { print(item) }
额外注意点
- 要确保你的
data模型类里确实定义了id和user_id这两个属性,而且属性类型要和你查询的数值类型匹配(比如都是Int类型,如果是字符串就得用双引号包裹值,比如"id == '2'")。 - 如果
id或user_id是可选属性,记得在查询里处理nil情况,比如写成"id != nil && id == 2"。
内容的提问来源于stack exchange,提问作者Inderpal Singh
相关产品推荐
相关产品推荐

