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

标签 ios arrays swift loops

我正在尝试创建一个存储 365 个整数的数组,它必须被完全填充。我正在使用 Healthkit 来计算用户一年前的步数,从而计算出数组大小。每个整数代表 1 天。

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

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

struct stepy {
  static var step = [365]
}

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

但是我遇到了一个问题,目前我相信我会覆盖第二步枚举中已输入日期的日期?另外,我无法正确编译日期代码,我只是得到日期没有名为“add”的有效成员

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
          }
        }
      }
    }
  }
}

最佳答案

 static var step = [365]

上面说的没有道理。它不会创建一个包含 365 个整数的数组,而是创建一个包含一个整数的数组,即 365。您需要的是

 static var step: [Int] = []

这会创建一个空数组,您可以将结果附加到其中

currently I believe I would overwrite the days which already has been inputted into the date at the second step enumeration?

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

Also I can't get the date code to compile properly, I just get the Date has no valid member called "add"

正确,事实并非如此。还有这一行:

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

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

无论如何,我不明白这一切有什么意义。您的外循环大概每天循环一次统计数据,因此只需进行计算并将其附加到数组即可。它将首先是最旧的,但您可以反转数组以首先获取最新的。

关于ios - 插入数组并比较日期 Swift iOS 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46848451/

相关文章:

ios - 容器 View 操作

ios - 用彼此不同的随机数填充数组?

python - NumPy 检查二维数组是否是二维数组的子集

ios - 如何将 UILabel 转换为字符串?

iphone - 在 iPhone 中实现 Google+ 时出错

c++ - 如何使用getline从文件中读入数组

javascript - 根据结果​​使用 javascript 更改 p 的背景颜色

ios - AVPlayer 在视频循环时保存在内存中

json - 解析一些网站数据(SWIFT/JSON)

ios - 如何获取 NSManagedObject 的主键值?