【发布时间】:2018-07-15 16:22:45
【问题描述】:
线程 1:EXC_BAD_ACCESS(代码=2,地址=0x7ffee3387ff8)
如果错了可以改正吗?我认为问题来自else if 声明{}
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
}
}
}
}
【问题讨论】:
-
任何不小心写的感叹号 (
!) 都可能导致应用程序崩溃。请再次阅读我对您上一个问题的回答:在switch情况下没有break语句(default除外) 和没有 snake_cased 变量名 在 Swift 中。 -
请你举个例子来理解
-
我不明白,因为我刚开始
-
显然
fetchProduct()返回一个可选项。如果可选项为nil,则强制展开 (!) 可选项会导致崩溃。请阅读有关选项的 Swift 语言指南。如果您是初学者,请接受有关语法和命名约定的建议。 -
好的,我会努力解决的
标签: swift xcode if-statement swift3