我有一个使用NSPredicate
的查询,它使用正则表达式并匹配路径:
let predicate = NSPredicate(format: "path MATCHES '/test/([^/]*[^/])$'")
匹配文件夹测试内的所有内容,但不包括测试中所有文件夹的子文件夹,如下所示:
问题是,我无法在 Realm.io 中使用MATCH
NSPredicate
关键字。如何重现此查询以便它在Realm中工作?
为完整性添加例外:
*** Terminating app due to uncaught exception 'Invalid operator type', reason: 'Operator type 6 not supported for string type'
答案 0 :(得分:1)
所以现在我已经解决了这个问题(修改模型,我想避免):
NSPredicate(format: "path ==[c] %@", "/test/")
代替正则表达式来获取文件夹 test 的内容。为什么我对这个解决方案并不完全满意:
我想避免将字段 fullPath 分成两个字段,因为当文件重命名+移动时,它只有一个操作 - 重写 fullPath 数据库。这可能看起来像是一个小问题,但只有一个责任位给它更强大,因为文件在应用程序的环境中一直被移动和重命名。
答案 1 :(得分:0)
来自Realm的乔在这里。目前使用MATCH
的Realm查询不支持regex,您需要手动执行此操作。我会构建一个NSArray并使用过滤谓词。我们了解这一点并跟踪所有不受支持的谓词here