Regex 如何在NSPredicate到查询域中复制匹配?

Regex 如何在NSPredicate到查询域中复制匹配?,regex,nspredicate,realm,Regex,Nspredicate,Realm,我有一个使用NSPredicate的查询,它接受正则表达式并匹配路径: let predicate = NSPredicate(format: "path MATCHES '/test/([^/]*[^/])$'") 它匹配文件夹test中的所有内容,但排除test中文件夹的所有子文件夹,如下所示: /测试/作业成本->是 /测试/abc/def->否 问题是,我不能在Realm.io中使用NSPredicate的MATCH关键字。如何复制此查询,使其在域中工作 添加完整性例外: ***由于未

我有一个使用
NSPredicate
的查询,它接受正则表达式并匹配路径:

let predicate = NSPredicate(format: "path MATCHES '/test/([^/]*[^/])$'")
它匹配文件夹test中的所有内容,但排除test中文件夹的所有子文件夹,如下所示:

  • /测试/作业成本->是
  • /测试/abc/def->否
  • 问题是,我不能在Realm.io中使用
    NSPredicate
    MATCH
    关键字。如何复制此查询,使其在域中工作

    添加完整性例外:


    ***由于未捕获的异常“运算符类型无效”而终止应用程序,原因是:“字符串类型不支持运算符类型6”

    Joe from Realm here。当前,
    MATCH
    的领域查询不支持regex,您需要手动执行此操作。我将构建一个NSArray并在此基础上使用一个过滤器谓词。我们知道这一点并跟踪所有不受支持的谓词

    ,因此现在我已经解决了这样的问题(修改模型,这是我想要避免的):

  • 我只存储到父级的路径,而不是与名称一起存储的完整路径。名称存储在不同的字段中(为了获得完整路径,我将两个字符串缝合在一起)
  • 我没有匹配正则表达式,而是使用
    NSPredicate(格式:“path==[c]]@”,“/test/”
    来获取文件夹test的内容
  • 为什么我对这个解决方案不完全满意:


    我希望避免将字段fullPath分为两个字段,因为当文件被重命名并移动时,这只是一个操作——在数据库中重写fullPath。这似乎是一个小问题,但只有一个责任地使它更健壮,因为在应用程序的环境中,文件一直在移动和重命名。

    嗨,乔,谢谢你的时间。然而,我能够在第685-706行中获得此信息。我希望您知道一些解决方法。通过更改模型解决问题。建议的
    NSArray
    过滤是不可接受的-如果有大量的子文件夹和文件,在列出根文件夹的内容时,我实际上在整个结构中循环了两次。密切关注#1490:-)很高兴听到您找到了更好的替代解决方案!感谢您耐心等待,我们将继续为查询添加更多支持