コアデータプロジェクト(Swift)で状態復元を実装しようとしていますが、NSFetchedResultsControllerの周りのラッパークラスである分割ビューコントローラのUITableViewのデータソースにUIDataSourceModelAssociationプロトコルを実装する際に問題があります。 コードは次のとおりです。Xcode 8.1 UIDataSourceModelAssociationが壊れていますか?
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 }
私は「静的Foundation.IndexPath._unconditionallyBridgeFromObjectiveCの問題点を指すように思われる状態の復元に、AppDelegateクラスの最上部にデバッガを停止しEXC_BAD_INSTRUCTION例外を取得しています(Swift.Optional < __ObjC.NSIndexPath>) - > Foundation.IndexPath "を参照してください。
私は「コマンドでのplistにsavedStateフォルダから生じdata.dataファイルを変換するためにrestorationArchiveToolを使用して.../restorationArchiveTool --plist --structured -oパス/に/
もしOUTPUTFILE
...しかし - :
kApplicationSelectedCellIndexPathsKey ...( "0x7fe60054cb00 > {3長= 2、パス= 0} < NSIndexPath:")私は次の取得、プレビューを有する得られたplistファイルを表示しますXcodeでplistを開くと、次のようになります:
kApplicationSelectedCellIndexPathsKeyキーのちょうど(デコーダを推定値
データファイルを変換するためのplistのリーダと同じアルゴリズムを使用するため、例外のいくつかの種類を取得することは驚くべきことではないと。
UIDataSourceModelAssociation拡張を削除した場合、その例外はなくなります。
誰もがこの問題を確認したり、私が本当に明白な何かを逃したことはありますか?