Swift 执行操作时出现快速错误

Swift 执行操作时出现快速错误,swift,xcode,if-statement,swift3,Swift,Xcode,If Statement,Swift3,线程1:EXC\u坏访问(代码=2,地址=0x7ffee3387ff8) 如果错了,有人能改正吗?我认为问题来自else ifstatement{}

线程1:EXC\u坏访问(代码=2,地址=0x7ffee3387ff8)

如果错了,有人能改正吗?我认为问题来自
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语言指南。如果你是一个初学者,请注意语法和命名规则。好的,我会尝试修复它