swift如何为 JSON 生成筛选器字符串

标签: json Swift
发布时间: 2017/3/6 0:17:29
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

是否有任何公约来生成筛选器文本对象在使用 Swift 吗?

class Account {
  var active : Bool!
  ...
}

示例︰ 我帐户类 Swift 和帐户模型在环回,我想要得到与域帐户"积极 = true"= 我需要生成的筛选器{"where" : {"active" : true}}

需要手工键入这些类型的查询。我肯定还有人想了一下,我只是需要的关键字的方法。

PS︰ 我扩展我的类从领土和 ObjectMapper。

解决方法 1:

最新的答案

如果我理解你的评论在我原来的答复下,您需要生成JSON字符串形式的 {"where" : {"active" : true}}true 是实际上的 bool 值的你 Account 实例。这个 JSON 字符串然后将用作 MongoDB 的查询/筛选器。

为此,我建议你计算的属性添加到 Account 类。此属性将使用 NSJSONSerialization 从 bool,创建 JSON数据和使用 String() 来创建一个 JSON字符串从这个数据。

示例︰

class Account {
    var active : Bool!

    var boolQuery: String? {
        let dict = ["where": ["active": active]]
        if let json = try? NSJSONSerialization.dataWithJSONObject(dict, options: []),
                query = String(data: json, encoding: NSUTF8StringEncoding) {
            return query
        }
        return nil
    }
}

使用方法︰

let acc = Account()
acc.active = true
if let query = acc.boolQuery {
    print(query)
}

打印︰

{"在哪里": {"主动": 真实}}

let acc = Account()
acc.active = false
if let query = acc.boolQuery {
    print(query)
}

打印︰

{"在哪里": {"主动": 假}}

我不确定如果我得到了您的设置 (哪一类是负责什么),在"谁做什么",但我看来,它是那种你所需的代码。

当然它也可以免费的功能︰

func boolQuery(account: Account) -> String? {
    let dict = ["where": ["active": account.active]]
    if let json = try? NSJSONSerialization.dataWithJSONObject(dict, options: []),
        query = String(data: json, encoding: NSUTF8StringEncoding) {
        return query
    }
    return nil
}

等。


以前的答案

它是从你的问题,有点不清楚而且不知道你的意思与"I 型这类查询手工需要"...,但我想,不管怎么说,您有一个数组的 Account 实例。

那么就很容易筛选此数组和获得的实例只在 activetrue :

let result = arrayOfAccounts.filter { $0.active }

这里 result 是一个数组,包含只有帐户在哪里 active 是真的。

赞助商