在swift

时间:2016-04-13 19:58:15

标签: arrays swift generics swift2

我有一系列元组,如下面的

var customProducts = [(productType: String, info:[String:AnyObject?])]

参数" productType"就像水果,谷物,饮料等产品类别一样,

参数" info"是一本产品营养信息词典。

我希望根据productType获取元组数组的子集,这样我就可以获得" info"特定productType的字典。在C#中,我会使用Linq尝试类似下面的内容:

var fruits = customProducts.Where(q=>q.productType == "fruit").Select(q => q.info) as List<KeyValuePair<string, object>>;

如何使用Swift(2.x)存档相同的结果?

谢谢!

3 个答案:

答案 0 :(得分:2)

我认为Swift的等价物是:

<!doctype html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>My App</title>
    <link rel="stylesheet" type="text/css" href="/styles.css">
  </head>
  <body class="no-skin">
    <div id="app"></div>
    <script src="/bundle.js"></script>
  </body>
</html>

此处let fruits = customProducts.filter { $0.productType == "fruit" }.map { $0.info } fruits,一个字典数组([[String : AnyObject?]]数组,如果我没有记错,则与info相同。)< / p>

答案 1 :(得分:1)

您可以使用过滤方法

let beverageInfo = (customProducts.filter { $0.productType == "Beverage" }).first?.info

现在beverageInfo[String : AnyObject?]?,这是一个表示“饮料”元组信息的可选字典。

答案 2 :(得分:1)

您应该根据产品的类型

过滤数组

例如

var customProducts = [(productType: String, info:[String:AnyObject?])]

let fruitProducts = customProducts.filter { product in 
    if product.productType == "fruit" {
        return true
    } else {
        return false
    }
}.map { $0.info }

然后你可以随意使用fruitProducts。