ios - Swift 2 : Call can throw, 但未标记为 'try' 错误未处理

标签 ios xcode swift

在我安装 Xcode 7 beta 并将我的 swift 代码转换为 Swift 2 之后,我遇到了一些我无法弄清楚的代码问题。我知道 Swift 2 是新的,所以我搜索并弄清楚了,因为没有关于它的任何内容,我应该写一个问题。

这是错误:

Call can throw, but it is not marked with 'try' and the error is not handled

代码:

func deleteAccountDetail(){
        let entityDescription = NSEntityDescription.entityForName("AccountDetail", inManagedObjectContext: Context!)
        let request = NSFetchRequest()
        request.entity = entityDescription

        //The Line Below is where i expect the error
        let fetchedEntities = self.Context!.executeFetchRequest(request) as! [AccountDetail]

        for entity in fetchedEntities {
        self.Context!.deleteObject(entity)
        }

        do {
            try self.Context!.save()
        } catch _ {
        }

    }

快照: enter image description here

最佳答案

您必须像您已经为 save() 调用所做的那样捕获错误,并且由于您在此处处理多个错误,您可以尝试多个在单个 do-catch block 中按顺序调用,如下所示:

func deleteAccountDetail() {
    let entityDescription = NSEntityDescription.entityForName("AccountDetail", inManagedObjectContext: Context!)
    let request = NSFetchRequest()
    request.entity = entityDescription

    do {
        let fetchedEntities = try self.Context!.executeFetchRequest(request) as! [AccountDetail]

        for entity in fetchedEntities {
            self.Context!.deleteObject(entity)
        }

        try self.Context!.save()
    } catch {
        print(error)
    }
}

或者正如 @bames53 在下面的评论中指出的那样,最好不要在抛出错误的地方捕获错误。您可以将方法标记为 throws 然后 try 调用该方法。例如:

func deleteAccountDetail() throws {
    let entityDescription = NSEntityDescription.entityForName("AccountDetail", inManagedObjectContext: Context!)
    let request = NSFetchRequest()

    request.entity = entityDescription

    let fetchedEntities = try Context.executeFetchRequest(request) as! [AccountDetail]

    for entity in fetchedEntities {
        self.Context!.deleteObject(entity)
    }

    try self.Context!.save()
}

关于ios - Swift 2 : Call can throw, 但未标记为 'try' 错误未处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43594854/

相关文章:

ios - Realm 反向关系返回具有 nil 属性的对象

iphone - 在加载另一个 ViewController 时呈现模态视图 Controller

swift - UITabBarController 图像太小

ios - BarButtonItems 是如何添加到 NavigationBar 的?

ios - 如何设置一个 ViewController 上 UILabel 上的文本以从另一个 ViewController 中提取?

ios - [Xcode]xcodebuild 归档是否返回状态代码?

objective-c - 在带有 TableView 的基于选项卡栏的应用程序中单击某个部分时出现错误

ios - 当我更改 ViewController 时 UIImageView 不旋转

arrays - 如何使用prepareForSegue从二维数组传递值

ios - 在 Swift 中设置 UIButton Image - 当前解包为 nil