我想在TableView中跟踪完成的主题列表
我已经设置了代表,以确认tableView主题标记已完成]
protocol TopicDetialVCDelegate: class { func hasBeenCompletedTopic()
}
TableViewVC
func hasBeenCompletedTopic() { isPerformedDelegate = true if !completedTopicIdArray.contains(completedTopicId) { completedTopicIdArray.append(completedTopicId) } print("completed Topics \(completedTopicIdArray)") print("TopicVC: Completed Topics total: \(completedTopicIdArray.count)") }
这正在工作,但是我想始终将已标记为已完成标记为已完成
这里是CellForRowAt的代码
if isPerformedDelegate { for _ in 0...completedTopicIdArray.count { if completedTopicIdArray.contains(filteredTopicArray[indexPath.row].id!) { cell.topicCompletedTickImageView.image = #imageLiteral(resourceName: "Tick") } } }
我想要什么
应该有一个数组,该数组可以获取所有已完成的主题idz,并在每次运行应用程序时检查单元格索引路径是否包含topicID show Tick image
我可以这样使用UserDefaults
UserDefaults.standard.set(array, forkey: "abc")
但问题是数组将在应用程序运行时再次初始化
就像在ViewWillDisappear中一样
override func viewWillDisappear(_ animated: Bool) { UserDefaults.standard.set(completedTopicIdArray, forKey: "completedTopics") UserDefaults.standard.synchronize() }
在ViewDidLoad中访问
let topics = UserDefaults.standard.array(forKey: "completedTopics") print(topics as? [Int] ?? [Int]())
我想在TableView中跟踪完成的Topics列表,我已经设置了代表,该委托将对TableView主题的标记确认为已完成的协议TopicDetialVCDelegate:类{func hasBeenCompletedTopic()} ...
我已经使用CoreData解决了这个问题,想分享