我可以从条件数组在Couchbase Lite swift运行时中创建Where子句吗?

我可以从条件数组在Couchbase Lite swift运行时中创建Where子句吗?,swift,couchbase,couchbase-lite,n1ql,Swift,Couchbase,Couchbase Lite,N1ql,我正在使用Couchbase Lite 2.6, 我想在运行时构建我的查询,我通过一个API收到一个条件列表([“Key”:“value”]),我需要使用该API过滤我的本地数据库并显示这些值 使用QueryBuilder有什么方法可以做到这一点吗? 我在Couchbase论坛上发现了一个类似的讨论,但它已经很旧了,所以解决方案不再有效 让我给你举一个android的例子,你可以用swift来推断: String name = "foo"; String surname = "b

我正在使用Couchbase Lite 2.6, 我想在运行时构建我的查询,我通过一个API收到一个条件列表([“Key”:“value”]),我需要使用该API过滤我的本地数据库并显示这些值

使用QueryBuilder有什么方法可以做到这一点吗?

我在Couchbase论坛上发现了一个类似的讨论,但它已经很旧了,所以解决方案不再有效


让我给你举一个android的例子,你可以用swift来推断:

    String name = "foo";
    String surname = "bar";
    Expression ex = Expression.property("type").equalTo(Expression.string("user"));
    if(name != null) {
        ex.and(Expression.property("name").equalTo(Expression.string(name)));
    }

    if(surname != null) {
        ex.and(Expression.property("surname").equalTo(Expression.string(surname)));
    }

    Query query = QueryBuilder
            .select(SelectResult.all())
            .from(DataSource.database(DatabaseManager.getDatabase()))
            .where(ex)
            .limit(Expression.intValue(10));

让我给你举一个android的例子,你可以用swift来推断:

    String name = "foo";
    String surname = "bar";
    Expression ex = Expression.property("type").equalTo(Expression.string("user"));
    if(name != null) {
        ex.and(Expression.property("name").equalTo(Expression.string(name)));
    }

    if(surname != null) {
        ex.and(Expression.property("surname").equalTo(Expression.string(surname)));
    }

    Query query = QueryBuilder
            .select(SelectResult.all())
            .from(DataSource.database(DatabaseManager.getDatabase()))
            .where(ex)
            .limit(Expression.intValue(10));

因为这个问题是针对Swift的,所以最好用Swift给出答案: 这与@deniswsrosa提到的代码相同,但在siwft中

  let name = "foo";
    let surname = "bar";
    let ex = Expression.property("type").equalTo(Expression.string("user"));
    if(name != nil) {
        ex.and(Expression.property("name").equalTo(Expression.string(name)));
    }

    if(surname != nil) {
        ex.and(Expression.property("surname").equalTo(Expression.string(surname)));
    }

    let query = QueryBuilder
            .select(SelectResult.all())
            .from(DataSource.database(DatabaseManager.getDatabase()))
            .where(ex)
            .limit(Expression.int(10));

因为这个问题是针对Swift的,所以最好用Swift给出答案: 这与@deniswsrosa提到的代码相同,但在siwft中

  let name = "foo";
    let surname = "bar";
    let ex = Expression.property("type").equalTo(Expression.string("user"));
    if(name != nil) {
        ex.and(Expression.property("name").equalTo(Expression.string(name)));
    }

    if(surname != nil) {
        ex.and(Expression.property("surname").equalTo(Expression.string(surname)));
    }

    let query = QueryBuilder
            .select(SelectResult.all())
            .from(DataSource.database(DatabaseManager.getDatabase()))
            .where(ex)
            .limit(Expression.int(10));

请说明否决该问题的原因?请说明否决该问题的原因?