我制作了一个自定义单元格,显示从实时数据库 (Firebase) 检索的字符串的一些重要详细信息。这一切都运行良好,没有任何问题。
我的问题是,我需要从每个单元格上的文本标签中获取日期(从字符串数组中检索,从数据库中获取),将它们转换为日期,然后计算从该日期算起是否已经过去超过 3 天,如果是这样,该单元格将以某种颜色突出显示,以便用户可以注意。
我可以将字符串转换为日期,没有问题,我的问题是如何从数组中执行此操作,并让单元格知道文本字段上显示的日期早于 3 天。
我想我知道该怎么做,即将数组转换为日期,然后在文本标签上显示日期,而不是字符串,然后创建一个条件来查看日期是否早于 3 天,如果是,突出显示单元格。
我的问题是我不知道如何做到这一点,因为每次我尝试将数组转换为日期时我都得到零。
任何人都可以给我一个指引或方向吗,我对编程有点陌生,第一次使用 TableViews 这样做。
更新
这是我当前的 UITableView 代码:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
var cell = UITableViewCell()
var projects = self.projectsArray[indexPath.row]
var dates = self.projectsDateArray[indexPath.row]
var statuses = self.projectsStatusArray[indexPath.row]
var users = self.projectsUserArray[indexPath.row]
cell.textLabel?.text = projects
if indexPath.row > 0 {
let customCell = self.projectsTableView.dequeueReusableCell(withIdentifier: OrderManagementCell.identifier) as! OrderManagementCell
customCell.configure(with: projects, date: dates, status: statuses, user: users)
return customCell
}
return cell
}
这是从实时数据库检索数据的代码:
func getTableViewData() {
let ref = databaseRef.child("User_Information").child("\(dataName)").child("Projects")
ref.observe(.value) { (snapshot) in
for details in snapshot.children {
let snap = details as! DataSnapshot
let project = snap.value as! [String: Any]
let date = project["Date"] as! String
let status = project["Status"] as! String
let user = project["User"] as! String
self.projectsDateArray.append(date)
self.projectsStatusArray.append(status)
self.projectsUserArray.append(user)
//print("\(date) \(status) \(user)")
}
}
}
表视图和集合视图使用数据源。这是一个实现了多种方法的对象,这些方法告诉表/集合视图有多少部分和行,并在询问时提供单元格。
通常,您的数据源由数组提供(如果您使用分段表/集合视图,则为数组数组。)结构体数组效果很好,因为结构体可以保存单元格中所需的所有内容的属性。
您需要设置一个模型,以便您根据需要配置单元格。
我建议使用一个结构体数组,其中包含用于显示的日期字符串和日期对象或布尔值,让您决定是否需要突出显示每个单元格。
您可以从结构体数组开始,其中填充了日期字符串,但
Date
字段为空。然后对结构数组执行一个映射语句,将 Date
字段替换为从日期字符串(使用 DateFormatter)计算出的 Date
除非我们知道您的数据是什么样的,否则我们无法帮助您进行设置。编辑您的问题以显示您当前用于保存单元格数据的数据结构以及一些示例数据。还显示一些示例日期字符串,以及用于将日期字符串转换为日期对象的代码。 (不要回复评论。在您原来的问题中添加信息。)