ios - 使用核心数据获取零项会导致错误

标签 ios swift uitableview

我目前正在尝试使用 Core Data 来获取项目并将其添加到我的 UITableView 中。获取和添加项目工作正常。然而,问题是当数据没有任何内容时,我的获取结果是“ fatal error :在展开可选值时意外发现 nil”,这是有道理的,因为我数据库中没有任何内容。但我不想崩溃,而是想捕获错误并生成 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)")
        }
    }

更新 - 我已经更新了代码以检查 nil,但是,我得到:条件绑定(bind)的初始化程序必须具有可选类型,而不是 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")
        }
    }

最佳答案

您还可以使用

 if !(itemsFetch.isEmpty){
}
else{
print("error")
}

关于ios - 使用核心数据获取零项会导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41390832/

相关文章:

ios - Swift 不确定我是否以正确的方式使用 segue

ios - 从相机获取 yuv 平面格式图像 - iOS

objective-c - 在 OS X 应用程序中,如何在以编程方式创建窗口时使用自动布局?

ios - 自定义 UITableViewCell : UITextFields clearing when scrolled out of view- dequeuing problems 的问题

ios - MVC 中的附加类

ios - 如何测试我的 NSNumberFormatter 只初始化一次?

swift - 使用依赖于其他实例变量的值初始化惰性实例变量

ios - 弹出到相机 UIImagePickerViewController 时禁用模糊 View

ios - Swift 从 UITableViewCell 中删除存储在 UITableViewController 中的数据

ios - 无法删除所有带动画的 UITableView 单元格