代码之家  ›  专栏  ›  技术社区  ›  Fawkes

Swift中列表计数的领域子查询

  •  1
  • Fawkes  · 技术社区  · 9 年前

    我有

    class Car : Object
    {
         let queries : List<QueryModel> = List<QueryModel>()
    }
    

    class QueryModel : Object
    {
        let location : String = ""
    }
    

    现在,我该如何编写NSPredicate来获取那些查询位置等于“伦敦”的汽车?

    p、 众所周知,像@count这样的东西在Swift List类上不起作用。。。

    p、 p.s.我需要它作为谓词,因为这是RBQFetchedResultsController知道如何完成工作的唯一方法。

    我觉得它可能是这样写的 NSPredicate(format: "SUBQUERY(queries, $query, $query.location == %@)", 'London') 。但这样的情况从未通过Realm的谓词验证:)

    1 回复  |  直到 9 年前
        1
  •  3
  •   Mikael    9 年前

    你可以写

    NSPredicate(format: "ANY queries.location = %@", locationString)
    

    如果要添加其他筛选,可以创建其他NSPredicate,然后使用

    NSCompoundPredicate(andPredicateWithSubpredicates: [pred1, pred2])
    

    以组合过滤器。

    现在,如果你想过滤汽车,你必须准备一个

    let request = FetchRequest<Car>(realm: realm, predicate: predicate)
    

    然后可以使用RBQFetchedResultsController来执行请求。