【发布时间】:2019-04-04 10:21:18
【问题描述】:
我正在尝试使用文本字段作为表格视图的搜索栏。所以我添加了下面的代码。现在它显示一些错误,如
Cannot assign value of type 'Array<Dictionary<String, String>>' to type '[MyVC.Objects]'
var objectArray = [Objects]()
var SearchedobjectArray = [Objects]()
override func viewDidLoad() {
super.viewDidLoad()
SearchedobjectArray = objectArray
}
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool
{
if string.isEmpty
{
search = String(search.characters.dropLast())
}
else
{
search=textField.text!+string
}
print(search)
let predicate=NSPredicate(format: "SELF.name CONTAINS[cd] %@", search)
let arr=(objectArray as NSArray).filtered(using: predicate)
if arr.count > 0
{
SearchedobjectArray.removeAll(keepingCapacity: true)
SearchedobjectArray = arr as! Array<Dictionary<String,String>>
}
else
{
SearchedobjectArray=objectArray
}
looTable.reloadData()
return true
}
错误在这里:
SearchedobjectArray = arr as! Array<Dictionary<String,String>>我知道,我不用作Array<Dictionary<String,String>。但在这里我怎么能像我的项目一样追加我不确定。
有什么帮助吗?
【问题讨论】:
-
我不确定你在尝试什么奇怪的演员阵容,但你想要做的事情可以使用
SearchedobjectArray = objectArray.filter { $0.name.range(of: search, options: [.diacriticInsensitive, .caseInsensitive]) != nil }来实现。不需要NSPredicate、NSArray或 if-else。 -
但是我的
objectArray包含 looName,只有 id...所以如果输入任何名称包含 looName..它必须显示在表格视图中
标签: ios swift uitextfield searchbar