在Swift 5中,如何有效地提取和使用多维数组中的元素?

问题描述 投票:2回答:4

这是我第一次使用swift / xcode编程,这是我的第五天,请客气。

我已经创建了一个格式为[[A],[B],[C],[D],[E],[F]],...的数组,以用作查找表。要求是获取A-AM / PM和B,C-开始时间,并检查当前时间(小时,分钟)是否在D,E-结束时间]的范围内>,如果这样,请在UILabel上打印message 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,以检查当前的小时,分​​钟是否在这些范围内;但不确定我是否了解多维数组解析。我尝试了各种方法,并尝试在网上查找,但仍在挣扎。

我什至应该使用数组,还有其他更有效的数据结构吗?

任何帮助或建议,我们将不胜感激。

谢谢,

这是我第一次使用swift / xcode编程,这是我的第五天,请客气。我创建了一个格式为[[A],[B],[C],[D],[E],[F]],...的数组,以用作查找表。要求是...

arrays swift multidimensional-array time
4个回答
1
投票

使用类型为[(Hour,Minute):String]的字典


1
投票

这有点棘手,因为Date同时对日期和时间进行建模,并且没有同行会仅对时间或日期进行建模。我通过使用整数元组即兴创作。这可能不是最好的解决方案,但是这是我能提出的最好的解决方案(欢迎提出建议!)


1
投票

您可以创建自己的结构,如下所示:


0
投票

[这里是ClosedRange的一个很酷的答案。它允许您创建自定义时间范围,并且可以根据您选择的时间为您提供多条消息。

© www.soinside.com 2019 - 2024. All rights reserved.