【发布时间】:2017-02-03 10:02:48
【问题描述】:
由于“尝试从第 1 节中删除第 1 项,但更新前只有 1 个节”,我的应用程序崩溃了
我发现其他文章说数据源必须与collectionView或tableView保持同步,所以我从我的数组中删除了对象:在我删除collectionView中的项目之前发出警报,这适用于didSelectItemAtIndexPath。但我不知道为什么这不起作用。
我还尝试打印 array.count,它显示对象确实从数组中删除。
func disableAlarmAfterReceiving(notification: UILocalNotification) {
for alarm in alarms {
if alarm == notification.fireDate {
if let index = alarms.index(of: alarm) {
let indexPath = NSIndexPath(item: index, section: 1)
alarms.remove(at: index)
collectionView.deleteItems(at: [indexPath as IndexPath])
reloadCell()
}
}
}
}
func reloadCell() {
userDefaults.set(alarms, forKey: "alarms")
DispatchQueue.main.async {
self.collectionView.reloadData()
print("Cell reloaded")
print(self.alarms.count)
}
}
【问题讨论】:
-
将
let indexPath = NSIndexPath(item: index, section: 1)更改为let indexPath = NSIndexPath(item: index, section: 0),然后检查。异常本身是非常自我解释的。 -
从数组中删除对象时尝试调用 reloadData()。
标签: ios swift xcode uilocalnotification collectionview