如何在Swift中搜索包含struct元素的Array?

Nar*_*ngh 22 arrays ios swift ios8

在类型为String,Int等的数组中查找元素非常简单.

var States = ["CA", "FL", "MI"]
var filteredStates = States.filter {$0 == "FL"} // returns false, true, false
Run Code Online (Sandbox Code Playgroud)

现在,我创建了一个结构

struct Candy{
    let name:String
}
Run Code Online (Sandbox Code Playgroud)

然后初始化它

var candies =  [Candy(name: "Chocolate"),
Candy(name: "Lollipop"),
Candy(name: "Caramel")]
Run Code Online (Sandbox Code Playgroud)

任何人都可以建议在包含struct元素的数组中找到"Chocolate"的正确方法吗?我无法实现find或filter方法.

Pri*_*ine 31

使用以下代码,您将收到数组中与之匹配的所有糖果结构"Chocolate".

var candiesFiltered = candies.filter{$0.name == "Chocolate"}
Run Code Online (Sandbox Code Playgroud)

如果您只是想要一个布尔值,如果已经找到它,您可以使用以下代码:

var found = candies.filter{$0.name == "Chocolate"}.count > 0
Run Code Online (Sandbox Code Playgroud)

  • 语法可以简化为`filter {$ 0.name == ...}`,因为闭包是'尾随'. (2认同)