xcode 调用中的 Swift 2 额外参数“错误”

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/31113479/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-15 07:23:29  来源:igfitidea点击:

Swift 2 Extra argument ' error' in call

iosxcodeswift2xcode7

提问by markutus

Hi i'm updating my project from Swift to Swift2 with Xcode 7 and i'm getting this CoreData error :

嗨,我正在使用 Xcode 7 将我的项目从 Swift 更新到 Swift2,但出现此 CoreData 错误:

Extra argument 'error' in call

in this line

在这一行

if coordinator!.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url, options: nil, error: &error) == nil {

EDIT

编辑

this is my code:

这是我的代码:

lazy var persistentStoreCoordinator: NSPersistentStoreCoordinator? = {
        // The persistent store coordinator for the application. This implementation creates and return a coordinator, having added the store for the application to it. This property is optional since there are legitimate error conditions that could cause the creation of the store to fail.
        // Create the coordinator and store
        var coordinator: NSPersistentStoreCoordinator? = NSPersistentStoreCoordinator(managedObjectModel: self.managedObjectModel)
        let url = self.applicationDocumentsDirectory.URLByAppendingPathComponent("Xipe_Tech.sqlite")
        var error: NSError? = nil
        var failureReason = "There was an error creating or loading the application's saved data."

        do {
            try coordinator!.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url, options: nil)
            coordinator = nil
            // Report any error we got.
            var dict = [String: AnyObject]()
            dict[NSLocalizedDescriptionKey] = "Failed to initialize the application's saved data"
            dict[NSLocalizedFailureReasonErrorKey] = failureReason
            dict[NSUnderlyingErrorKey] = error
            error = NSError(domain: "YOUR_ERROR_DOMAIN", code: 9999, userInfo: dict)
            // Replace this with code to handle the error appropriately.
            // abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
            NSLog("Unresolved error \(error), \(error!.userInfo)")
            abort()

        } catch let error as NSError {
            print(error.localizedDescription)

        }

        return coordinator
    }()

now i get error in first line how can i fix that ?? Thanks

现在我在第一行出现错误我该如何解决??谢谢

回答by agy

Swift 2 now provides a try/catch mechanism, and Cocoa APIs have been rewritten to use this instead rather than returning the error the traditional Objective C way.

Swift 2 现在提供了一个 try/catch 机制,并且 Cocoa API 已经被重写以使用它而不是传统的 Objective C 方式返回错误。

You should now do this:

你现在应该这样做:

do {
    try coordinator!.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url, options: nil)
} catch let error as NSError {
    print(error.localizedDescription)

} 

回答by markutus

anyone else having this issue just use this below. I had the same issue. Apple replaced the original "if coordinator!.addPersistentStoreWithType" with a do try catch phrase.

其他有这个问题的人只需在下面使用这个。我遇到过同样的问题。Apple 用 do try 口号替换了原来的“if coordinator!.addPersistentStoreWithType”。

do {
        try coordinator!.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url, options: nil)
    } catch {
        // Report any error we got.
        var dict = [String: AnyObject]()
        dict[NSLocalizedDescriptionKey] = "Failed to initialize the application's saved data"
        dict[NSLocalizedFailureReasonErrorKey] = failureReason

        dict[NSUnderlyingErrorKey] = error as NSError
        let wrappedError = NSError(domain: "YOUR_ERROR_DOMAIN", code: 9999, userInfo: dict)
        // Replace this with code to handle the error appropriately.
        // abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
        NSLog("Unresolved error \(wrappedError), \(wrappedError.userInfo)")
        abort()
    }

    return coordinator
    }()