【问题标题】:Populating an array of 365填充 365 个数组
【发布时间】:2017-10-17 10:45:44
【问题描述】:

所以我试图填充一个大小为 365 的数组,数组中的每个值都应该在前一天呈现,stepy.step.apppend(steps) 代码的第一行,用可从 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)
    }              
}

【问题讨论】:

  • 如果 numbers != 0 你将 number 与 0 相乘 number * 0 将任何数字乘以 0 结果将是 0。你想要达到什么目的??
  • 这是一个非常混乱的问题。我实际上不确定您要做什么或正在(或没有)发生什么。您能否在问题中再回到基础知识,以帮助我们了解您在此处尝试做什么。
  • 我正在尝试从过去 365 天的 healthkit 中提取步骤,这非常有效,但只返回非空天的值。我需要在函数未填充的天数中输入 0 值,因此数组有 365 个值
  • 您在问题中提到了这一点。但是您发布的代码中没有任何内容与日期或 HealthKit 有任何关系。所以我不太确定代码应该做什么。
  • 它是一个大小为 365 的数组,第一个函数步骤用不同日期的步骤填充数组。然而不是每个人都365天回来,那些不是一天的,我需要把0放进去。

标签: ios arrays swift loops if-statement


【解决方案1】:

也许就是这样

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

应该是

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

(比较number次迭代,而不是范围。)

但话又说回来,number != 0 返回一个Bool,包含真/假没有意义。


仅与问题松散相关的方法

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

请注意,我对 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] }

【讨论】:

  • (1...365).map { _ in 0 } 可以替换为Array(repeating: 0, count: 365)
  • 你是对的!甚至会更高效(因为不需要迭代)?
  • 刚刚注意到一个问题,但是去年的第二个数组步骤没有用,是干什么用的?
  • 由于我没有完全理解您的问题,我将结果提取到一个新变量中。我不能 100% 确定您的应用程序会做什么,因为缺少太多信息。如果这是存储 365 个条目的位置,那么它可能是整个 stepy.step 数组的替代品。
猜你喜欢
  • 2016-07-18
  • 2019-01-31
  • 2013-03-16
  • 2015-07-13
  • 2019-07-28
  • 2012-08-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多