2015-10-13 2 views
1

AppDelegate xcode генерирует, когда я создаю новый проект, есть ошибки внутри него, которые я пытаюсь отлаживать, поскольку я новичок в быстром. Почему генерируемые файлы возвращают ошибки и как я могу предотвратить это при создании новых быстрых проектов?Зачем возникают ошибки в сгенерированном файле AppDelegate?

Ошибка 1

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 
}() 

Ошибка 2

func saveContext() { 
    if let moc = self.managedObjectContext { 
     var error: NSError? = nil 
     if moc.hasChanges && !moc.save(&error) { 
     //ERROR: CANNOT CONVERT VALUE OF TYPE 'INOUT NSERROR?'(AKA 'INOUT OPTIONAL<NSERROR>') TO EXPECTED ARGUMENT TYPE '()' 
      NSLog("Unresolved error \(error), \(error!.userInfo)") 
      abort() 
     } 
    } 
} 

Я попытался вручную отладки это, но моя неопытность в обоих редактирования AppDelegate и используя быстрые впустили меня, как каждая ошибка, которую я удаляю, сопровождается некоторыми новыми ошибками.

ответ

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() 
     } 
    } 
} 
+0

Спасибо, это компилируется нормально после двух изменений Xcode предложенных, которые я положил в редактировать. – Deco

+0

Спасибо! Просто скажите, что Xcode теперь предложил сделать это: managedObjectContext! .save() –

+0

О, да. Спасибо что подметил это. Я отредактировал свой ответ. – joern

Смежные вопросы