Swift 执行操作时出现快速错误
线程1:EXC\u坏访问(代码=2,地址=0x7ffee3387ff8) 如果错了,有人能改正吗?我认为问题来自Swift 执行操作时出现快速错误,swift,xcode,if-statement,swift3,Swift,Xcode,If Statement,Swift3,线程1:EXC\u坏访问(代码=2,地址=0x7ffee3387ff8) 如果错了,有人能改正吗?我认为问题来自else ifstatement{}
else if
statement{}<如果有人能修复它,并告诉我我之前发布的代码中的问题在哪里,我必须做些什么来解决问题,我不知道是否有人能帮我
func fetchAndUpdateTableView(){
if catagory == "Tools" {
if let url = urlCoreData{
switch (url) {
case "All_m0":
let shit = All_m0()
coreVariables.results_All_M0 = shit.fetchProduct()!
break
case "Screw_drive":
let screwd = Screw_drive()
coreVariables.results_Screw_Drive = screwd.fetchProduct()!
break
case "Wrench_m":
let Wrenchm = Wrench_m()
coreVariables.results_Wrench_M = Wrenchm.fetchProduct()!
break
default:
break
}
}
else if catagory == "Water Pressure"{
if let url = urlCoreData{
switch (url) {
case "All_m1":
let All1 = All_m1()
coreVariables.results_All_M1 = All1.fetchProduct()!
break
default:
break
}
}
else if catagory == "Garden Equipments"{
if let url = urlCoreData{
switch (url) {
case "All_m2":
let All2 = All_m2()
coreVariables.results_All_M2 = All2.fetchProduct()!
break
default:
break
}
}
}
tableView.reloadData()
}
}
}
//MARK: get and parse JSON
func processJsonData(resource : String) {
let path = Bundle.main.path(forResource: resource, ofType: "json")
do {
let data = try Data(contentsOf: URL(fileURLWithPath: path!), options: .alwaysMapped)
do{
let object = try JSONSerialization.jsonObject(with: data as Data, options: .allowFragments)
if let dictionary = object as? NSArray {
fetch_Store_Functions.readJSONObject(object: dictionary, catagory: catagory, urlCoreData: urlCoreData)
}
} catch {
// Handle Error
}
} catch let error {
print(error.localizedDescription)
}
}
func loadFunction(){
if catagory == "Tools" {
if let url = urlCoreData{
switch (url) {
case "All_m0":
// self.fetchAndUpdateTableView()
if coreVariables.results_All_M0.count == 0{
self.processJsonData(resource: selectedCatagory)
}else{
self.fetchAndUpdateTableView()
tableView.reloadData()
}
break
case "Screw_drive":
//self.fetchAndUpdateTableView()
if coreVariables.results_Screw_Drive.count == 0{
self.processJsonData(resource: selectedCatagory)
tableView.reloadData()
}else{
self.fetchAndUpdateTableView()
tableView.reloadData()
}
break
case "Wrench_m":
// self.fetchAndUpdateTableView()
if coreVariables.results_Wrench_M.count == 0{
self.processJsonData(resource: selectedCatagory)
tableView.reloadData()
}else{
self.fetchAndUpdateTableView()
tableView.reloadData()
}
break
default:
break
}
}
}else if catagory == "Water Pressure"{
if let url = urlCoreData{
switch (url) {
case "All_m1":
self.fetchAndUpdateTableView()
if coreVariables.results_All_M1.count == 0{
self.processJsonData(resource: selectedCatagory)
tableView.reloadData()
}else{
self.fetchAndUpdateTableView()
tableView.reloadData()
}
break
default:
break
}
}
}else if catagory == "Garden Equipments"{
if let url = urlCoreData{
switch (url) {
case "All_m2":
// self.fetchAndUpdateTableView()
if coreVariables.results_All_M2.count == 0{
self.processJsonData(resource: selectedCatagory)
}else{
self.fetchAndUpdateTableView()
tableView.reloadData()
}
break
default:
break
}
}
}
}
你需要在你的方案中加入僵尸对象,然后进入profile instruments,Zombies并运行应用程序,看看它是否像这样捕捉到它
当内存分配给某个变量,然后释放该变量,然后另一个进程尝试使用该变量时,就会发生此错误。任何不小心写的感叹号(
!
)都可能导致应用程序崩溃。请再次阅读我对您上一个问题的回答:switch
案例中没有break
语句(除了default
),Swift中没有snake\u cased变量名。请您举一个例子来理解我不明白的原因,因为我一开始就发现fetchProduct()
返回一个可选的。强制展开(!
)如果可选项为nil
,则该可选项会导致崩溃。请阅读有关期权的Swift语言指南。如果你是一个初学者,请注意语法和命名规则。好的,我会尝试修复它