我目前正在嘗試使用核心數據來獲取項目並將其添加到我的UITableView。抓取和添加項目工作正常。但是,問題是數據什麼都沒有,我的讀取結果是「致命錯誤:在解包可選值時意外發現零」,這是有道理的,因爲我在數據庫中沒有任何東西。但是,我不想崩潰,我想捕捉錯誤併產生一個UIAlert錯誤消息,而不是崩潰。但我目前的代碼似乎不工作。獲取核心數據導致錯誤的無項目
func fetch() {
let itemsFetch = NSFetchRequest<NSFetchRequestResult>(entityName: "Items")
do {
let fetchedItem = try moc.fetch(itemsFetch) as! [Items]
self.itemsName.append(fetchedItem.first!.name!)
self.itemDate.append(fetchedItem.first!.date!)
self.tableView.reloadData()
//print(fetchedItem.first!.name!)
//print(fetchedItem.first!.date!)
} catch {
//I thought this statement would catch the error, but it
// is not doing that
print("Hello")
fatalError("Bad things happened \(error)")
}
}
更新 - 我已經更新了代碼來檢查爲零,但是,我得到:Initialiser for conditional binding must have optional type not NSFetchRequest
。不知道如何解決。
func fetch() {
if let itemsFetch = NSFetchRequest<NSFetchRequestResult>(entityName: "Items") {
do{
let fetchedItem = try moc.fetch(itemsFetch) as! [Items]
self.itemsName.append(fetchedItem.first!.name!)
self.itemDate.append(fetchedItem.first!.date!)
self.tableView.reloadData()
//print(fetchedItem.first!.name!)
//print(fetchedItem.first!.date!)
} catch {
print("Hello")
fatalError("Bad things happened \(error)")
}
} else {
print("Checked")
}
}
把此行中,如果條件一樣,如果讓itemsFetch = NSFetchRequest(的entityName: 「項目」){} –
檢查'nil'訪問之前,不像java swift不會拋出'NullPointerException' –
@HimanshuMoradiya當我嘗試這種方法,我得到2錯誤,使用未解決的標識符'itemsFetch'和條件綁定的初始化必須有可選類型,而不是NSFetchRequest –