ios - 转换值后如何过滤表视图?LosslessStringConvertible 错误
问题描述
我正在制作一个仅显示 ID 号和全名的员工表格视图,我的目标是在将数字转换为字符串后使用数字进行过滤。
为什么我要转换它们?很简单,我想向他们展示以搜索栏编号开头的其他员工。例如,如果他们输入“524”,它不仅会显示员工 524(如果他/她存在),还会显示数字字段中以 524 开头的任何员工。
问题是:尝试将 int32 转换为字符串时出现 LosslessStringConvertible 错误
我“可以”重写我的数据库和类以使数字接受字符串而不是整数,但是我必须强迫我当前的最终用户删除所有以前的 SQL 数据,这是我的上级极力不推荐的。
如果您有任何问题,请告诉我。
我已经有代码在下面按名称过滤。
func filterContentForSearchText(_ searchText: String) {
var number : String
if(!isSearchBarEmpty){
if(!isFilterByNumber){
filteredemployee_list = employee_list.filter {
$0?.employee_name.range(of: searchText, options: .caseInsensitive, range: nil, locale: nil) != nil
}
employeeTableview.reloadData()
}
else{
//Number filter
filteredemployee_list = employee_list.filter {
String($0?.number).range(of: searchText, options: .caseInsensitive, range: nil, locale: nil) != nil
employeeTableview.reloadData()
}
else{
filteredemployee_list = employee_list
employeeTableview.reloadData()
}
解决方案
我认为这是可选的,String($0?.number)
因为它给你带来了麻烦。如果您执行以下操作,它应该可以工作。
filteredEmployees = employees.filter { employee in
guard let employee = employee else {
return false
}
let range = String(employee.number).range(
of: searchText,
options: .caseInsensitive,
range: nil,
locale: nil
)
return range != nil
}
我重命名了一些变量和属性以遵循 Swift 最佳实践。
推荐阅读
- javascript - 突出显示的输入文本不会在按键时更新
- python - Python,macOS - 如何创建文件的查找器别名?
- css - 更改输入焦点上的边框
- google-chrome - 仅 Chrome 上的 SVG 平铺间隙
- batch-file - 如何使用 WinSCP 连续上传文件
- git - 结帐分支不会还原我的更改
- opencv - 构建 OpenCV 4 需要 CC 5.3 或更高版本 - RTX 2080TI
- swift - 如何获取firebase键值
- sql - 在 CRAN R 中使用 BETWEEN 命令进行 SQL 查询以选择日期
- ruby-on-rails - Rails - HTTParty 如何访问参数?