【发布时间】:2020-08-13 20:03:21
【问题描述】:
这是我第 5 天使用 swift/xcode 编程的新手,请善待。
我创建了一个格式为 - [[A], [B], [C], [D], [E], [F]], ... 的数组作为查找表。要求是获取 A - AM/PM 和 B, C - Start Time 并检查当前时间(小时、分钟)是否在 的范围内D, E - 结束时间,如果是,则在 UILabel 上打印 消息 F。
例如,如果现在是凌晨 3.04,我的程序将使用下表打印“去睡觉,我会在 4 点通知你”
// [[A], [B], [C], [D], [E], [F]], ...
let messageArray : Array = [
[["AM"], [00], [00], [00], [01], ["it's \nmidnight"]],
[["AM"], [00], [02], [02], [59], ["it's very late (or early), \nto be up"]],
[["AM"], [03], [00], [03], [01], ["are you ready \nfor the 03 am call?"]],
[["AM"], [03], [02], [03], [59], ["go to sleep \ni'll let you know when it's \n4"]],...
我知道如何从当前时间获取小时和分钟。
let date = Date()
var calendar = Calendar.current
let hour = calendar.component(.hour, from: date)
let minute = calendar.component(.minute, from: date)
并且我需要一个外部和内部循环来遍历矩阵的每个 x、y。对于每个单元格,我需要提取数组并获取前 4 个元素 - AM/PM、startHour、startMinute、endHour、endMinute 以检查当前小时、分钟是否在这些范围内;但我不确定我是否理解多维数组解析。我尝试了各种方法并尝试在网上查找,但我很挣扎。
我是否应该为此使用数组,还有其他更有效的数据结构吗?
任何帮助或建议将不胜感激。
谢谢,
【问题讨论】:
-
字典可能更适合查找表。
-
为什么需要最里面的数组,或者更好的是为什么不创建一个结构来保存每一行的值。
-
@koen 字典无法匹配这样的间隔。
-
我一直不明白为什么
Date模拟日期+时间(我希望它被称为DateTime或Instant),以及为什么没有专门的仅日期或仅时间Foundation 中的数据类型。 -
@Alexander-ReinstateMonica 我同意。我用;
func fullDate() -> Array<Any> { let dateText = DateFormatter.localizedString(from: Date(), dateStyle: .full, timeStyle: .none) let dateArray = dateText.components(separatedBy: ", ") return(dateArray) } func fullTime() -> Array<Any> { let timeText = DateFormatter.localizedString(from: Date(), dateStyle: .none, timeStyle: .full) let timeArray = timeText.components(separatedBy: " ") return(timeArray) }
标签: arrays swift multidimensional-array time