1

これは、iOS 9 および 10 を搭載したデバイスで発生するエラーです。

*** キャッチされない例外 'NSInternalInconsistencyException' が原因でアプリを終了します。

エラーは明らかですが、iOS 11 を搭載したデバイスでこれが発生しない理由を理解できません。

修正方法がわかりません。

これが私のコードです:

extension MainTileViewController: MainForecastsDelegate {
func mainForecasts(_ forecastVC: MainForecastsViewController!, didChangeWith object: Any!) {
    if let cell = self.outletWeatherForecastCollectionView.cellForItem(at: self.currentIndexPath) as? MainTileCollectionViewCell { 
        // Some stuff...
    }
}

ここでクラッシュが発生します。これは、ユーザーが日などを切り替えるときにトリガーされるプロトコル メソッドです。

明らかに、currentIndexPath に問題があります。

ここに私の初期化があります:

 var currentIndexPath : IndexPath = []

そして viewDidLoad で:

self.currentIndexPath = IndexPath(item: 0, section: 0)

クラッシュしないようにコードを保護するにはどうすればよいですか? iOS 9/10 の collectionView と iOS 11 の collectionView (プリフェッチを除く) の間の動作の変化について説明していただけますか。

4

2 に答える 2

0

アプローチを少し変えることをお勧めします。コレクション ビュー セルのサブクラスが、おそらく通知から、それ自体を更新する責任を負うようにします。インデックス パスまたはセルへの参照を保持しようとすると、再利用される傾向があるため、常に問題が生じます。

于 2017-12-07T15:54:31.603 に答える