Ich bekomme diese seltsame Warnung "Verwendung von nicht aufgelösten Bezeichnern", obwohl ich die Variable in der Zeile oben deklariere.NSFetchedResultsController nicht aufgelöster Bezeichner Swift 4
Was passiert hier? Hier ist mein Code:
var fetchedResultsController: NSFetchedResultsController<Project> {
if _fetchedResultsController != nil {
return _fetchedResultsController
}
let fetchRequest: NSFetchRequest<Project> = Project.fetchRequest()
fetchRequest.fetchBatchSize = 20
let sortDescriptor = NSSortDescriptor(key: "name", ascending: false)
fetchRequest.sortDescriptors = [sortDescriptor]
let aFetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: self.managedObjectContext!, sectionNameKeyPath: nil, cacheName: "Master")
aFetchedResultsController.delegate = self
_fetchedResultsController = aFetchedResultsController
do {
try _fetchedResultsController.performFetch()
} 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.
//println("Unresolved error \(error), \(error.userInfo)")
abort()
}
return _fetchedResultsController!
}
und hier ist der Code von einem Apple-Template-Projekt, das keine Warnungen oder Fehler hat:
var fetchedResultsController: NSFetchedResultsController<Event> {
if _fetchedResultsController != nil {
return _fetchedResultsController!
}
let fetchRequest: NSFetchRequest<Event> = Event.fetchRequest()
// Set the batch size to a suitable number.
fetchRequest.fetchBatchSize = 20
// Edit the sort key as appropriate.
let sortDescriptor = NSSortDescriptor(key: "timestamp", ascending: false)
fetchRequest.sortDescriptors = [sortDescriptor]
// Edit the section name key path and cache name if appropriate.
// nil for section name key path means "no sections".
let aFetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: self.managedObjectContext!, sectionNameKeyPath: nil, cacheName: "Master")
aFetchedResultsController.delegate = self
_fetchedResultsController = aFetchedResultsController
do {
try _fetchedResultsController!.performFetch()
} catch {
// Replace this implementation with code to handle the error appropriately.
// fatalError() 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
fatalError("Unresolved error \(nserror), \(nserror.userInfo)")
}
return _fetchedResultsController!
}
Ich begann mich zu denken, dass es etwas mit dem zu tun haben könnte, CoreData-Entität (Klasse), die ich erstellt habe (Projekt). Obwohl es sich um eine einfache Entität mit einem Attribut (Name) handelt, hat das Vorlagenprojekt auch eine Entität (Ereignis) mit einem Attribut (timeStamp).
Meine "Tools Version" der CoreData ist auf Automatisch (XCode 9.0) eingestellt und die "Code Generation" ist auf Swift eingestellt.
Eine andere Sache, die ich bemerke ist, dass XCode manchmal meine Entität (Projekt) nicht erkennt und ich neu starten muss, um dieses Problem zu lösen.
Ist XCode 9 mit CoreData fehlerhaft?
Dont schreiben das Bild nicht geben Sie bitte poste den Code. Schließlich, selbst wenn das kompiliert wird, werden Sie in die Endlosschleife eintreten, indem Sie auf die Eigenschaft in ihrem Getter zugreifen. Willst du zufällig versuchen, faule var zu implementieren? –
Ich wollte den Code posten, aber die Warnungen wurden nicht angezeigt, damit mein Problem nicht korrekt angezeigt wird. – BillySangster
Sie können den Code und den Fehler eingeben, den Sie unten eingeben können. Wir können Ihren Code nicht kopieren und in unseren Arbeitsbereich einfügen, um zu überprüfen, was in Ihrem Code falsch ist, wenn Sie das Bild hochladen :) –