Swift 一元运算符'';不能应用于类型为';()';

Swift 一元运算符'';不能应用于类型为';()';,swift,unary-operator,Swift,Unary Operator,一元运算符'!'无法应用于“()”类型的操作数 在Swift 2迁移中获取此错误 func saveContext() { if let foregroundMO = VPDataManager.sharedInstance.persistentStack.managedObjectContext { var error:NSError? = nil; let managedObjectContext: NSManagedObjectConte

一元运算符'!'无法应用于“()”类型的操作数

在Swift 2迁移中获取此错误

func saveContext() {

    if let foregroundMO = VPDataManager.sharedInstance.persistentStack.managedObjectContext
    {
        var error:NSError? = nil;

        let managedObjectContext: NSManagedObjectContext = foregroundMO
        managedObjectContext.mergePolicy = NSOverwriteMergePolicy

        if (managedObjectContext.hasChanges) && !(managedObjectContext.save())
        {
            VPAnalytics.leaveBreadcrumb("AppDelegate saveContext critical error: \(error), \(error?.userInfo)")
            logError("Unresolved issue: \(error), \(error?.userInfo)")
            abort()
        }
    }
}
错误发生在
if(managedObjectContext.hasChanges
..

上,因为该方法没有返回值:

func save() throws
失败时会抛出一个错误,因此您可以像这样检查
save
是否成功:

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

.save()
是否返回
bool
?请注意,额外的括号使错误消息复杂化。