【发布时间】:2017-04-07 00:30:00
【问题描述】:
array1 = array1.filter{ $0.arrayInsideOfArray1.contains(array2[0]) }
上面的代码有效,但我正在尝试检查 $0.arrayInsideOfArray1 的所有元素是否与 array2 的所有元素匹配,而不仅仅是 [0]
例子:
struct User {
var name: String!
var age: Int!
var hasPet: Bool!
var pets: [String]!
}
var users: [User] = []
users.append(User(name: "testUset", age: 43, hasPet: true, pets: ["cat", "dog", "rabbit"]))
users.append(User(name: "testUset1", age: 36, hasPet: true, pets:["rabbit"]))
users.append(User(name: "testUset2", age: 65, hasPet: true, pets:["Guinea pigs", "Rats"]))
let petArr = ["cat", "dog", "rabbit"]
users = users.filter { $0.pets.contains(petArr[0]) }
我想要的是任何在 petArr 中列出任何宠物的用户!
【问题讨论】:
-
您还没有解释您希望使用您发布的代码获得什么结果。
-
print(user) prints: (name: "testUset", age: 43, hasPet: true, pets: ["cat", "dog", "rabbit"])] 但结果我在这种情况下想要得到的是: User(name: "testUset", age: 43, hasPet: true, pets: ["cat", "dog", "rabbit"])] User(name: "testUset1",年龄: 36, hasPet: true, pets:["rabbit"])]
-
那么您想要的是拥有
petArr中列出的任何宠物的任何用户,对吗? -
那么请更新您的问题以明确这一点。更新您的问题以显示您想要的结果。
-
@NikaE 您应该将结构的所有属性声明为常量,并在所有这些属性中删除您的 IUO。结构不需要您创建其初始化程序。
struct User { let name: String let age: Int let hasPet: Bool let pets: [String] }