为什么生成的AppDelegate文件中存在错误?

时间:2015-10-13 14:47:44

标签: ios swift

当我创建一个新项目时,AppDelegate xcode会产生错误,我正在努力调试,因为我是swift的新手。为什么生成的文件返回错误?如何在创建新的swift项目时防止这种情况?

错误1

.footer

错误2

lazy var persistentStoreCoordinator: NSPersistentStoreCoordinator? = {
    var coordinator: NSPersistentStoreCoordinator? = NSPersistentStoreCoordinator(managedObjectModel: self.managedObjectModel)
    let url = self.applicationDocumentsDirectory.URLByAppendingPathComponent("Swift_Conversion.sqlite")
    var error: NSError? = nil
    var failureReason = "There was an error creating or loading the application's saved data."
    if coordinator!.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url, options: nil, error: &error) == nil {
        coordinator = nil
        //ERROR: EXTRA ARGUMENT 'ERROR' IN CALL
        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)
        NSLog("Unresolved error \(error), \(error!.userInfo)")
        abort()
    }

    return coordinator
}()

我试图手动调试这个但是我在编辑AppDelegate和使用swift方面缺乏经验让我失望,因为我删除的每个错误都伴随着一些新的错误。

1 个答案:

答案 0 :(得分:4)

addPersistentStoreWithType的方法签名已更改。它现在是throwable,必须像这样使用:

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.
    print("Unresolved error \(wrappedError), \(wrappedError.userInfo)")
    abort()
}

save上的NSManagedObjectContext方法相同:

func saveContext () {
    if managedObjectContext!.hasChanges {
        do {
            try managedObjectContext!.save()
        } catch {
            // Replace this implementation 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.
            let nserror = error as NSError
            print("Unresolved error \(nserror), \(nserror.userInfo)")
            abort()
        }
    }
}