示例:我有以下数据集:

date         eur   usd    aud
------------------------------
2015-01-01   0.5   1.0    1.5
2015-01-02   0.6   1.1    1.6
2015-01-03   0.4   1.0    1.3
           ....
2015-02-01   0.5   1.0    1.5
2015-02-02   0.6   1.1    1.6
2015-02-03   0.4   1.0    1.3


我的目标是计算一年中每周的平均汇率eur / usd eud / aud。我期待以下结果:

avg eur / usd:
------------------
Week 1   0.5
Week 2   0.54
Week 3   0.4


为了计算欧元/美元比率,我添加了NSExpression。这是代码:

    let usdExpression = NSExpression(forKeyPath: "usd")
    let eurExpression = NSExpression(forKeyPath: "eur")
    let ratioExpression = NSExpression(forFunction: "divide:by:", arguments: [usdExpression, eurExpression])
    let avgRatioExpression = NSExpression(forFunction: "average:", arguments: [ratioExpression])


我添加表达式以获取请求。现在我按周分组。我不在数据库中存储星期(那里只有日期)。我在模型中添加了transient property并在其中实现了逻辑:

var weekOfYear {
   var numberOfWeek: Int?
   ...
   return "Week \(numberOfWeek)"
}


但我无法按此属性分组。那么,有什么方法可以接收分组值?如果没有,我的表情似乎毫无用处。

最佳答案

您不能按瞬变进行分组,因为它实际上并未存储在SQL中。您可以将瞬时值设为永久值并更新存储中的所有记录,然后将其用于提取。这可能是最好的方法,因为周数不变,并且是一小块数据,而且,随着数据越来越多地提取到内存中或运行多次提取将花费更多的时间。

关于ios - 核心数据计算和数据分组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32648302/

10-12 15:54
查看更多