このような質問がありますが、それは私がSwift 2
で行ったように動作していません。私は誰かが明確にできることを望んでいたので、これまでと同じようにこの作業を行うことができます!私はSwift 2
にこのコードを持っていたし、それはその後、変更のみインデックスを再ロード、テーブル内のデータを更新し、firebase
の変化を検出します:ディスパッチ_get_main_queueがSwift 3で正常に機能していない
DataService.ds.REF_USERS.observeEventType(.ChildChanged, withBlock :{
(snapshot) in
if initialUserLoad == false {
for (index,user) in self.usersArray.enumerate() {
if user.objectForKey("uId") as! String == snapshot.key {
self.usersArray[index] = snapshot.value as! NSDictionary
dispatch_async(dispatch_get_main_queue()){[unowned self] in
self.collectionView.reloadItemsAtIndexPaths([NSIndexPath(forItem: index, inSection: 0)])
}
}
}
}
})
Swift 3
コードの自動更新はこれにそれを変更:
DataService.ds.REF_USERS.observe(.childChanged, with :{
(snapshot) in
if initialUserLoad == false {
for (index,user) in self.usersArray.enumerated() {
if user.object(forKey: "uId") as! String == snapshot.key {
self.usersArray[index] = snapshot.value as! NSDictionary
DispatchQueue.main.async{[unowned self] in
self.collectionView.reloadItems(at: [IndexPath(item: index, section: 0)])
}
}
}
}
})
私は今取得していますエラーがある:「ITEを削除しよう:キャッチされない例外により「NSInternalInconsistencyException」、理由にアプリを終了
更新前の3つの項目のみを含むセクション0のm 4 '
スレッドの問題があるようです。誰も私が前と同じように動作させる方法を知っていますか?あなたが提供できる任意のヘルプに事前に感謝します。
これはスレッドの問題ではありません。 "理由: 'セクション0から項目4を削除しようとしましたが、更新前には3つの項目のみが含まれています。そのセクションの合計アイテムよりも大きいインデックスのアイテムを削除しようとしています。 –
スタックトレースを確認しましたか?どのラインがクラッシュするのですか?例外ブレークポイントを設定する – Paulw11
セルをリロードしようとするとクラッシュする –