由于某种原因,当我尝试实现以下代码时,总是收到instance of categoryString can’t be used in MyTableViewController
或(当我尝试使用.contains
而不是.range
时出现的错误)的错误。 the function contains doesn’t exist in the VintageThings struct
。
我知道我可能遗漏了一个点或某物,但我不知道应该在哪里。请帮忙。
class MyTableViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
// Category is being called from the scene before
var categoryString = String()
var newArray:[VintageThings] = []
newArray = oldArray.filter({($0.category.range(of: categoryString)
}
答案 0 :(得分:1)
方法Array.filter
期望一个布尔条件,它将根据该条件过滤对象。而根据您的情况,您的情况(即$0.category.range(of: categoryString)
)将返回Range<String.Index>?
。例如,如果要使条件为布尔值,则必须检查其范围是否为零,即
newArray = oldArray.filter( { $0.category.range(of: categoryString) != nil } )
OR
newArray = oldArray.filter{ $0.category.range(of: categoryString) != nil }
OR
newArray = oldArray.filter { (vintageThing) -> Bool in
return vintageThing.category.range(of: categoryString) != nil
}
答案 1 :(得分:0)
花括号和括号不平衡,您必须检查!= nil
才能获得预期的Bool
结果。
newArray = oldArray.filter{ $0.category.range(of: categoryString) != nil }