插入数组并比较日期Swift iOS代码

时间:2017-10-20 11:47:57

标签: ios arrays swift loops

我正在尝试创建一个存储365个整数的数组,它必须完全填充。我使用Healthkit来确定一年后用户的步数,因此数组大小。每个整数代表1天。

我已经在android中完成了这个并且它工作得很好,我在没有步骤的情况下得到了365个整数,但是,问题在于iOS健康工具包我几天都没有得到任何数据,我需要的。为了做到这一点,我想我会将我得到的日期变量与当天的日期+ 1进行比较并循环遍历数组以查看是否找到任何匹配的情况,如果没有在结尾处放入0。

所以为了做到这一点,我创建了一个365的数组,在行var ID = 0的地方我尝试将整数正确地存储到数组中。我正在使用Swift 4.

struct stepy {
  static var step = [365]
}

这是我通过stepData枚举的地方,首先在var ID处我尝试将枚举循环中的日期与当前日期进行比较(基本上是数组中的索引0,表示第一天,当天) 。

但是我遇到了问题,目前我相信我会覆盖已经输入第二步枚举日期的日期?此外,我无法正确编译日期代码,我只是得到日期没有有效成员名为"添加"

stepsQuery.initialResultsHandler = { query, results, error in
  let endDate = NSDate()
  let startDate = calendar.date(byAdding: .day, value: -365, to: endDate as Date, wrappingComponents: false)
  if let myResults = results{
    myResults.enumerateStatistics(from: startDate!, to: endDate as Date) { statistics, stop in
      if let quantity = statistics.sumQuantity(){
        var date = statistics.startDate
        let steps = quantity.doubleValue(for: HKUnit.count())

        var id = 0                  
        var dateToInsert = date
        var today = Date()
        var todaytwo = Date()

        for index in 0..<stepy.step.count {
          if dateToInsert != today  {
            id = index + 1
            today.(Calendar.current.date(byAdding: .day, value: -1, to: today)
            stepy.step.append(0)                          
          }
          if date == dateToInsert as Date {                                    
            today.add(Calendar.current.date(byAdding: .day, value: -1, to: today)
            stepy.step.append(Int(steps))
            id = index + 1
          }
        }
      }
    }
  }
}

1 个答案:

答案 0 :(得分:0)

 static var step = [365]

以上没有意义。它不会创建365个整数的数组,它会创建一个数组,其中包含一个365的整数。您需要的是

 static var step: [Int] = []

创建一个空数组,您只需将结果附加到

即可
  

目前我相信我会覆盖已经输入第二步枚举日期的日子?

因为您的代码附加到数组,这与Java中的相同:myArrayList.add(element),这不是问题。

  

另外我无法正确编译日期代码,我只是得到Date没有名为“add”的有效成员

正确,但没有。这一行:

today.(Calendar.current.date(byAdding: .day, value: -1, to: today)

没有任何意义。这应该导致编译器错误。

无论如何,我不明白这一切是什么意思。您的外部循环可能会循环统计,每天一次,因此只需进行计算并附加到数组中。它首先是最古老的,但你可以反转数组以获得最新的数据。