2

我想搜索结构创建的对象。

假设这些是我们由Candystruct 创建的对象。

candies = [
  Candy(category:"Chocolate", name:"Chocolate Bar"),
  Candy(category:"Chocolate", name:"Chocolate Chip"),
  Candy(category:"Chocolate", name:"Dark Chocolate"),
  Candy(category:"Hard", name:"Lollipop"),
  Candy(category:"Hard", name:"Candy Cane"),
  Candy(category:"Hard", name:"Jaw Breaker"),
  Candy(category:"Other", name:"Caramel"),
  Candy(category:"Other", name:"Sour Chew"),
  Candy(category:"Other", name:"Gummi Bear")
]

我们如何在不创建两个数组并通过索引查找对象的情况下找到“棒棒糖”元素的类别?

4

1 回答 1

3

只是这个:

candies.first { $0.name == "Lollipop" }

如果您预计会有多个“棒棒糖”,那么:

candies.filter { $0.name == "Lollipop" }

在行动:

 13> struct Candy { 
 14.     let cat: String 
 15.     let name: String 
 16. } 
 17> var candies = [ 
 18.     Candy (cat: "Hard", name: "Lollipop"), 
 19.     Candy (cat: "Hard", name: "Jaw Breaker") 
 20.     ] 
candies: [Candy] = 2 values {
  [0] = {
    cat = "Hard"
    name = "Lollipop"
  }
  [1] = {
    cat = "Hard"
    name = "Jaw Breaker"
  }
}

 21> candies.first { $0.name == "Lollipop" } 
$R1: Candy? = (cat = "Hard", name = "Lollipop")

 22> candies.filter { $0.name == "Lollipop" } 
$R2: [Candy] = 1 value {
  [0] = {
    cat = "Hard"
    name = "Lollipop"
  }
}
于 2016-07-20T19:06:31.507 回答