You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Xcode 15中使用Realm List实现不区分大小写搜索

Realm搜索区分大小写问题解决方案
  • 先确认Realm版本与属性类型

    • 升级到最新版Realm Swift,旧版本对大小写忽略的支持可能存在bug
    • 确保name属性是标准的String类型,而非自定义字符串类型
  • 改用NSPredicate写法实现忽略大小写查询
    有时候SwiftUI的where闭包语法可能存在兼容性问题,换用NSPredicate的方式更可靠:

    .onChange(of: filterIllus) { value in
        let predicate = NSPredicate(format: "name CONTAINS[c] %@", value)
        $illie.where = predicate
    }
    

    其中CONTAINS[c]的[c]标记就是指定忽略大小写的规则

  • 预处理存储与搜索关键词(兜底方案)
    如果上述方法都无效,可以在数据存储阶段同步保存小写版本的字段,搜索时统一转小写匹配:

    1. 模型中新增字段:
      import RealmSwift
      
      class YourQuoteObject: Object {
          @Persisted var name: String
          @Persisted var nameLowercased: String // 新增小写存储字段
          // 其他属性...
      }
      
    2. 存储数据时自动赋值小写字段:
      let newObject = YourQuoteObject()
      newObject.name = "输入的名人姓名"
      newObject.nameLowercased = newObject.name.lowercased()
      // 写入Realm...
      
    3. 搜索时统一转小写匹配:
      .onChange(of: filterIllus) { value in
          let lowercasedQuery = value.lowercased()
          $illie.where = {$0.nameLowercased.contains(lowercasedQuery)}
      }
      

内容的提问来源于stack exchange,提问作者Q. Preau

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 08:08:19