填充365的数组

时间:2017-10-17 10:45:45

标签: ios arrays swift loops if-statement

所以我试图填充一个大小为365的数组,数组中的每个值都应该在一天后出现一天,stepy.step.apppend(步骤)代码的第一行,填充数组可以从healthkit获得的步骤数据,但是我从没有步骤的日子里得到任何回报,我需要填写未使用0的日期,以便稍后为这些步骤设置正确的日期。

编辑:所以说,我从某些日期的形式中获取了来自healthkit的步骤,但是从没有步骤的日子我什么也得不到,我需要用0值填充那些日子。我想通过首先添加步骤来做到这一点,并且对于每天0或null我添加数字0

stepy.step.append(Int(steps))

let numbers = 1...365
let numberCount = numbers.count

var products = [Int]()
products.reserveCapacity(numberCount)
for number in numbers {
    if stepy.step.contains(numbers != 0)
    {
        let product = (number * 0)
        print(product)
        stepy.step.append(product)
    }              
}

1 个答案:

答案 0 :(得分:1)

也许就是那个

if stepy.step.contains(numbers != 0)

应该是

if stepy.step.contains(number != 0)

(比较数字迭代,而不是范围。)

但是再一次,number != 0返回Bool,并且包含true / false没有意义。

仅与问题松散相关的方法

但是为了它的乐趣,这里有一种不同的方法来初始化具有一定容量的数组并在适当的位置插入值。

请注意,我添加了很多关于OP希望通过contains检查实现的内容的个人解释,因为OP发布的内容没有计算任何内容:

stepy.step.append(Int(steps))
// Indicated `stepy.step` is of type `[Int]`

// If you have to start with an input range, you can use:
//     (1...365).map { _ in 0 }
let stepsOfLastYear: [Int] = Array(repeating: 0, count: 365) 
    .enumerated()   // A different way to obtain an index like in a for loop
    .map { index, value in
        // The only containment check that makes sense: was the
        // source array large enough? -- If not, pass back 0.
        guard stepy.step.indices.contains(index) else { return value }
        return stepy.step[index] }