我正在尝试创建一个存储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
}
}
}
}
}
}
答案 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)
没有任何意义。这应该导致编译器错误。
无论如何,我不明白这一切是什么意思。您的外部循环可能会循环统计,每天一次,因此只需进行计算并附加到数组中。它首先是最古老的,但你可以反转数组以获得最新的数据。