Ich versuche, die Statuswiederherstellung für ein Core Data-Projekt (Swift) zu implementieren und habe Probleme bei der Implementierung des UIDataSourceModelAssociation-Protokolls für die Datenquelle eines UITableView in einem Split View-Controller, der eine Wrapperklasse um einen NSFetchedResultsController ist. Der Code ist:Xcode 8.1 UIDataSourceModelAssociation unterbrochen?
1 extension EventDataProvider : UIDataSourceModelAssociation
2 {
3 public func modelIdentifierForElement(at idx: IndexPath, in view: UIView) -> String?
4 {
5 let elementAtIndexPath = self.fetchedResultsController.object(at: idx)
6
7 return String(describing: elementAtIndexPath.objectID.uriRepresentation())
8 }
9 public func indexPathForElement(withModelIdentifier identifier: String, in view: UIView) -> IndexPath?
10 {
11 if let url = URL(string: identifier),
12 let objectID = self.fetchedResultsController.managedObjectContext.persistentStoreCoordinator?.managedObjectID(forURIRepresentation: url),
13 let object = self.fetchedResultsController.managedObjectContext.object(with: objectID) as? CDEvent
14 {
15 return self.fetchedResultsController.indexPath(forObject: object) as NSIndexPath?
16 }
17
18 return nil
19 }
20 }
ich eine EXC_BAD_INSTRUCTION Ausnahme bin immer, die den Debugger an der Spitze der AppDelegate Klasse hält, über staatliche Wiederherstellung, die mit „statischer Foundation.IndexPath._unconditionallyBridgeFromObjectiveC auf ein Problem zu hinweisen, scheint (Swift.Optional < __ObjC.NSIndexPath>) -> Foundation.IndexPath ".
verwende ich die restorationArchiveTool die resultierende data.data Datei aus dem savedState Ordner in einen plist mit dem Befehl“zu konvertieren .../restorationArchiveTool --plist --structured -o path/to/output
Wenn ich sehe die resultierende plist-Datei mit Vorschau, erhalte ich folgendes:
kApplicationSelectedCellIndexPathsKey ... ("< NSIndexPath: 0x7fe60054cb00 > {length = 2, path = 0 bis 3}")
... aber Wenn ich den Pliste in Xcode öffne, bekomme ich folgendes:
kApplicationSelectedCellIndexPathsKey für den Schlüssel aber mit nur (für den Wert
Vorausgesetzt, den Decoder mit dem gleichen Algorithmus wie der plist-Reader verwendet für die Datendatei konvertieren, wäre es nicht überraschend, eine Art von Ausnahme zu erhalten.
Wenn ich die UIDataSourceModelAssociation-Erweiterung entferne, verschwindet die Ausnahme.
Kann jemand anderes dieses Problem bestätigen oder habe ich etwas wirklich offensichtlich übersehen?