Hier ist mein Code:NSFetchedResultsControllerDelegate Delegierten Methoden aufgerufen nicht
class FetchResultControllerDataProvider: NSObject, NSFetchedResultsControllerDelegate {
private let fetchedResultController: NSFetchedResultsController
private var delegate: TodayViewController!
init(fetchedResultController: NSFetchedResultsController, delegate: TodayViewController) {
self.fetchedResultController = fetchedResultController
self.delegate = delegate
super.init()
self.fetchedResultController.delegate = self
try! self.fetchedResultController.performFetch()
}
func controllerWillChangeContent(controller: NSFetchedResultsController) {
print("Controller will change")
}
func controllerDidChangeContent(controller: NSFetchedResultsController) {
print("COntroller did changed")
}
func controller(controller: NSFetchedResultsController, didChangeSection sectionInfo: NSFetchedResultsSectionInfo, atIndex sectionIndex: Int, forChangeType type: NSFetchedResultsChangeType) {
print("Controller did change section")
}
func controller(controller: NSFetchedResultsController, didChangeObject anObject: AnyObject, atIndexPath indexPath: NSIndexPath?, forChangeType type: NSFetchedResultsChangeType, newIndexPath: NSIndexPath?) {
print("Controller did change object at indexpath")
}
}
func loadData() {
let request = NSFetchRequest(entityName: Transaction.entityName)
request.predicate = Transaction.defaultPredicate
request.sortDescriptors = []
request.returnsObjectsAsFaults = false
request.fetchBatchSize = 20
let frc = NSFetchedResultsController(fetchRequest: request, managedObjectContext: context, sectionNameKeyPath: nil, cacheName: nil)
let dataProvider = FetchResultControllerDataProvider(fetchedResultController: frc, delegate: self)
dataSource = TableViewDataSource(tableView: self.tableView, dataProvider: dataProvider, delegate: self)
}
Weder Methoden aus dem FetchResultControllerDataProvider
aufgerufen werden, wenn ich Daten bin hinzufügen. Aber ich kann es nicht verstehen warum.
Jemand kann mir dabei helfen?
edit:
Hinzufügen von Daten:
func addTransaction() {
self.context.performChanges {
Transaction.insert(self.context, name: self.name.text!, amount: Double(self.amount.text!)!, type: self.currentTypeTag)
}
public func saveOrRoleback() -> Bool {
do {
try save()
return true
} catch {
rollback()
return false
}
}
public func performChanges(block:() ->()) {
performBlockAndWait {
block()
self.saveOrRoleback()
}
}
Also dieser Teil des Codes genannt wird, und es gibt keine geworfen Fehler.
Aber ich habe versucht, die Core-Daten sql-Datei zu überprüfen, und es scheint leer zu sein. Also Daten werden nicht hinzugefügt.
Sie hinzufügen Haben Sie versucht Super zu entfernen .drin()? –
Wo in Ihrem Code fügen Sie Daten hinzu? Vielleicht müssen Sie mehr Code eingeben. –
Was behält die Instanz? Wird es sofort zerstört? – Wain