我创建了一个对象数组:
var fullMonthlyList = [SimulationMonthly]()
这里的课程:
class SimulationMonthly {
var monthlyMonthDuration: NSNumber = 0
var monthlyYearDuration: NSNumber = 0
var monthlyFullAmount: NSNumber = 0
var monthlyAmount: Int = 0
init(monthlyMonthDuration: NSNumber, monthlyYearDuration: NSNumber, monthlyFullAmount: NSNumber, monthlyAmount: Int){
self.monthlyMonthDuration = monthlyMonthDuration
self.monthlyYearDuration = monthlyYearDuration
self.monthlyFullAmount = monthlyFullAmount
self.monthlyAmount = monthlyAmount
}
}
我刚刚添加了填充它,现在我想查找它们是否是现有值,例如monthlyAmount等于" 194"通过在阵列中搜索,我该怎么办?我试过过滤器并包含但是我收到了错误。
我尝试过的事情:
if self.fullMonthlyList.filter({ $0.monthlyAmount == self.monthlyAmount.intValue }) { ... }
错误:
无法调用'过滤'使用类型'的参数列表((SimulationMonthly)throws - > Bool)'
答案 0 :(得分:3)
你可以这样做:
if let sim = fullMonthlyList.first(where: { $0.monthlyAmount == 194 }) {
// Do something with sim or print that the object exists...
}
这将为您提供数组中第一个monthlyAmount
等于194
的元素。
如果您想要所有元素,请使用filter
:
let result = fullMonthlyList.filter { $0.monthlyAmount == 194 }
如果您根本不需要该对象,但只是想知道某个对象是否存在,那么contains
就足够了:
let result = fullMonthlyList.contains(where: { $0.monthlyAmount == 194 })
答案 1 :(得分:1)
这是一个基于匹配属性过滤对象的简单操场示例。您应该能够根据自己的情况进行扩展。
class Item {
var value: Int
init(_ val: Int) {
value = val
}
}
var items = [Item]()
for setting in 0..<5 {
items.append(Item(setting))
}
func select(_ with: Int) -> [Item] {
return items.filter { $0.value == with }
}
let found = select(3)