2015-06-29 21 views
8

Merhaba ben Xcode 7 ile Swift2 için Swift dan projemi güncelliyorum ve ben bu CoreData hatayı alıyorum: Bu çizgideSwift 2 İlave argüman 'hatası'

Extra argument 'error' in call 

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

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

DÜZENLEME

bu benim kodudur

şimdi ilk satırda hata alıyorum bunu nasıl düzeltebilirim ?? Teşekkürler

+1

[Swift: Ekstra argüman 'hatası' çağrısında] olası yinelenen (http://stackoverflow.com/questions/31073497/swift-extra-argument-error-in-call) – Moritz

cevap

13

Swift 2, şimdi bir try/catch mekanizması sağlar ve bunun yerine geleneksel Objective C yolunu döndürmek yerine bunu kullanmak için Cocoa API'leri yeniden yazılmıştır.

Bunu şimdi yapmalıdır:

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

} 
+0

şimdi hata alıyorum Bu satırda: 'tembel var persistentStoreCoordinator: NSPersistentStoreCoordinator? = {'hata şudur:' Çağrı atabilir, ancak denenerek işaretlenmez ve hata işlemez ' – markutus

+0

Lütfen kodunuzu gösterin. Ama sizin fonksiyonumuzu çağırmadan önce deneme ek açıklamalarını eklemiyor gibi görünüyor – agy

+0

Kodumu ekliyorum, teşekkürler – markutus

5

başkasının bu konu hemen altında bu kullanmak zorunda. Bende aynı sorun vardı. Apple orijinal "yerine koordinator! .addPersistentStoreWithType" ile bir catch deyimi deneyin.

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