swift - 在搜索字段错误线程 1:EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
问题描述
如果我在搜索字段中写入,则会出现以下错误:
线程 1:EXC_BAD_INSTRUCTION(代码=EXC_I386_INVOP,子代码=0x0)
如果我输入逗号或数字(所以结果不存在),应用程序可以工作,但如果我输入一个字母(然后找到结果),应用程序就会崩溃。
override func updateControllerViews(_ animated: Bool) {
super.updateControllerViews(animated)
if textFieldSearch.text == "" {
containerButtons.isHidden = false
containerCollectionView.isHidden = true
imageDeletSearch.image = NSImage.init(named: "menu_header_cerca")
buttonDeleteSearch.isEnabled = false
} else {
containerButtons.isHidden = true
containerCollectionView.isHidden = false
imageDeletSearch.image = NSImage.init(named: "searchoff")
buttonDeleteSearch.isEnabled = true
updateDataSource()
}
collectionView.reloadData()
}
func updateDataSource() {
dataSource = DeviceSearchKeywords.filteredKeywords(byString: textFieldSearch.text)
}
extension DeviceSearchKeywords {
static func filteredKeywords(byString string: String?) -> [String : DeviceType] {
guard let string = string else {
return [:]
}
let cleanString = StringUtility.cleaning(string).lowercased()
var filteredKeyword: [String : DeviceType] = [:]
for keyword in mainDeviceKeywords {
if keyword.lowercased().contains(cleanString) {
filteredKeyword[keyword] = .deviceMain
}
}
for keyword in importDeviceKeywords {
if keyword.lowercased().contains(cleanString) {
filteredKeyword[keyword] = .deviceImport
}
}
for keyword in exportDeviceKeywords {
if keyword.lowercased().contains(cleanString) {
filteredKeyword[keyword] = .deviceExport
}
}
return filteredKeyword
}
}
解决方案
EXC_BAD_INSTRUCTION
意味着您在代码中插入了未定义的指令,并且在运行时检测到它。
你可以有一个:
- 强制强制转换失败(
as!
)但您发布的代码中没有证据 - 数组越界
- 试图强制 unwrap (
!
) 一个 nil 可选属性
如果您还没有这样做,请尝试调试激活异常断点的代码!
推荐阅读
- javascript - 地图中的值没有改变?
- hadoop - 一个datanode在hdfs中的使用率达到100%?平衡器不工作
- python - 如何将多个图表添加到一个excel的不同工作表中?
- gremlin - 如何删除gremlin中没有边的不可修改顶点?
- testing - PM2 Testcafe fs 操作导致崩溃
- scala - 关于在 scala 中使用 spark 数据框的说明
- wordpress - 如何在我的网站上显示这样的 Woocommerce 定价变量?
- java - 我想通过递归算法在链表中找到最大节点,但我的代码有问题
- python - 按二维索引对三维 numpy 数组进行排序
- uwp - UWP 性能:Task.Run() 与后台服务