我正在尝试创建一个存储 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/