【问题标题】:Swift 2.0 migrating code ErrorSwift 2.0 迁移代码错误
【发布时间】:2015-10-31 18:06:21
【问题描述】:

我在从 Swift 1.2 到 2.0 的代码迁移中遇到了一些麻烦,这就是我遇到的问题:

我已经导入了一些用 Swift 1.2 编写的类,并且我一直在将代码修改为 Swift 2.0,因为 Xcode 不断警告我一些要更改的新功能......到目前为止一切都很好。

现在我被这段代码卡住了,我无法扭转它,无论我做什么,我都无法修复它,现在我需要你的帮助。

代码如下:

var storeCoordinator:NSPersistentStoreCoordinator = NSPersistentStoreCoordinator(managedObjectModel: managedModel)

    if storeCoordinator.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url, options: nil) != nil{
        if error != nil{
            print(error!.localizedDescription)
            abort()
        }
    }

Xcode 发出的 2 个警告是

  1. '二元运算符'!='不能应用于'NSPersistentStore'和'nil'类型的操作数

  2. '调用可以抛出,但是没有标记'try',错误没有处理

在第二个上,我可以做一个简单的 do{...try/catch...} 方法并将其翻转,但我仍然坚持第一个。

提前感谢您的帮助。

PS:抱歉我的英语不好,希望可以理解。 干杯,伊万。

【问题讨论】:

    标签: ios xcode swift


    【解决方案1】:

    Swift 2.0 中,addPersistentStoreWithType 返回一个非可选的 NSPersistentStore,因此您无法检查 nil。如果发生错误,它抛出一个你必须捕获的错误:

    var storeCoordinator = NSPersistentStoreCoordinator(managedObjectModel: managedModel)
    
    do {
        try storeCoordinator.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url, options: nil)
    }
    catch let error as NSError {
        print(error.localizedDescription)
    }
    

    【讨论】:

    • 哦,你是对的。我完全错过了这一点。谢谢你帮助我。
    • 不客气。请点击旁边的复选标记将其变为绿色,以接受我的回答。
    • 您可以从 28:20 开始观看来自 WWDC 15 What's New In Swift 的精彩视频,介绍 Swift 2.0 中的错误处理
    • @vacawama 刚刚做了 ;)
    • @hash3r 我一定会做到的
    猜你喜欢
    • 2015-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-13
    相关资源
    最近更新 更多