Swift: 以不均匀的时间间隔发送数据

Swift: sending Data in uneven time intervals

我有一点小问题,我在Swift方面经验太少,无法自行解决。如果有人做过类似的事情或对我有一些建议,我将不胜感激。 所以这是我的问题。我有一个应用程序正在选择的文本文件。该文件本身由一个时间戳和一行代码组成。我将两者分开并将它们保存在数组中。时间戳是不均匀的,但我需要在相应的时间发送代码线。

    extension String {
        var integer: Int {
           return Int(self) ?? 0
        }
        // Converting the String Timestamp to a Float Value

        var secondsfromString: Float {
        var components : Array = self.components(seperatedBy: ":")
        let minutes = components[0].integer
        let seconds = components[1].integer
        let milliseconds = components[2].integer / 100
        return Float((minutes * 60) + seconds + milliseconds)
        }
     }

     if let path = Bundle.main.path(forResource: "", ofType: "cs2") {
          do {

             // Getting file content and removing empty lines
              let contents = try String(contentsofFile: path)
              let newlines = contents.split(whereSeperator: \.isNewline)

             // counting the Array
              let x = newlines.count as Int

             // Preallocating the Arrays and seperating timestamp and code
              var timestamp = [Sting]{repeating: "", count: x}
              var codelines = [Sting]{repeating: "", count: x}

              for counter in 0...x-1 {
                  timestamp[counter] = "" + newlines[counter].prefix(8)
                  codelines[counter] = "" + newlines[counter].suffix(26)
              }

             // Getting the time in seconds from timestamp
              var time = [Float](repeating: 0, count: x)
              for counter in 0...x-1 {
                   time[counter] = 0 + timestamp[counter].secondsfromString
              }

             // Getting the interval between each Timestamp
              var y = [Float](repeating: 0, count: x)
              y[0] = time[0]
              for i in 0...x-2 {
                  y[i+1] = time[i+1] - time[i]
              }

             // Here I want to send Data with the intervals I got from 
             // the Text file

             var timer = [Timer]()
             for t in 0...x-1 {
                timer[t] = Timer.scheduledTimer(
                               .withTimeInterval: TimeInterval(y[t]),
                               .repeats: false, block: { timer in
                    //code to send Data, not yet done
                 })
              }
                   

我已经用定时器尝试过一些事情,例如,当我使用没有循环的定时器时,我设法让第一个时间正确,但所有其他时间间隔与第一个时间间隔相同,这不是文本文件给了我什么。当我将计时器放入没有数组计时器的循环中时,它会“立即”执行所有操作,甚至第一个间隔都不正确。现在我想尝试制作一组​​计时器来完成它,但我就是无法让它工作。在这种情况下使用计时器是否正确,或者有更好的方法吗?

您的 time 数组似乎已经有了您想要的值。然后计算间隔,但这在这里没有用。创建一个预定的 Timer 将相对于“现在”执行。使用 time 减去“第一次”来安排所有这些;你不需要它们之间的间隔。