Ich bin auf Swift 3 migrieren und auf eine sehr seltsame Fehlermeldung während der Migration von abstrakten CoreData-Abfrage-Code gestoßen. entityName
wird auf die folgende Methode übergeben:Swift 3/XCode 8 NSManagedObjectContext.fetch Fehler
func objects(entityName name:String)->[NSManagedObject]? {
let fetchRequest: NSFetchRequest<NSFetchRequestResult> = NSFetchRequest(entityName:name)
var objects: [NSManagedObject]?
do {
objects = try managedObjectContext.fetch(fetchRequest)
} catch { ... }
}
Diese in den folgenden Fehlern führen:
Cannot invoke 'fetch' with an argument list of type '(NSFetchRequest<NSFetchRequestResult>)' Expected an argument list of type '(NSFetchRequest<NSFetchRequestResult>)'
Der Fehler wird unter Angabe ich nicht die Art seines erwarten kann. Kann man in Swift 3 so abstrakte Aufrufe an CoreData machen?
Der Beitrag How to apply the type to a NSFetchRequest instance? ist was mich so weit führen.
Ich habe versucht, fetchRequest
zu werfen, aber es hat nichts geändert. managedObjectContext.fetch(fetchRequest as! NSFetchRequest<NSFetchRequestResult>)
Sie für diese Karanveer danken. Ich war auf die Fehlermeldung aufgehängt und dachte nicht daran, das offensichtliche Castingproblem vor mir zu betrachten. Der Fehlerbericht wurde an Apple gesendet. https://openradar.appspot.com/radar?id=5049582866137088 – dmorrow
@dmorrow Gut. Es gibt auch andere Fehler, wie es Layoutprobleme gibt. Möglicherweise müssen Sie etwas in Ihrer Storyboard-Datei ändern. Wie im Dateiinspektor müssen Sie möglicherweise eine Option von Xcode 8.0 zu Xcode 7.x ändern –