首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用映射从坐标生成SwiftChart对象序列

使用映射从坐标生成SwiftChart对象序列
EN

Stack Overflow用户
提问于 2015-05-24 19:46:39
回答 1查看 139关注 0票数 2

我正在尝试迭代一个坐标数组,以便从每个坐标创建一个对象。坐标以元组(x,y,z,label)的形式存储。

代码语言:javascript
复制
private enum University 
{
     case Uni0,Uni1,Uni2, Uni3
}

let models: [(x: CGFloat, y:CGFloat, r:CGFloat, type: University)] = [
        (246.56, 138.98, 1,.Uni0), (218.33, 132.71, 1,.Uni0), (187.79, 127.48, 1, .Uni0), (150.63, 135.5, 1, .Uni0), (185.05, 152.57, 1, .Uni3), (213.15, 155.71, 1, .Uni1), (252.79, 158.85, 1, .Uni2), (315.77, 150.62, 1, .Uni0), (220.55, 149.57, 1, .Uni3)

行,它生成错误

代码语言:javascript
复制
let xValues = models{$0.x}.map{ChartAxisValueInt($0.x,labelSettings: labelSettings)}

ChartAxisValueInt是SwiftCharts的一个类。构造函数接受一个Int和一个ChartLabelSettings实例。

错误消息指出,不能使用((_) -> _ )类型的参数列表调用*map。

我认为map是合适的,因为我希望通过向另一个系列的每个成员应用一个函数来生成一个序列。

更令人困惑的是,来自SwiftCharts的下面示例代码不会生成该错误:

代码语言:javascript
复制
let xValues = Array(stride(from: 0, through: 450, by: 50)).map {ChartAxisValueInt($0, labelSettings: labelSettings)}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-24 21:02:04

似乎只是缺少了一个map()调用,

代码语言:javascript
复制
let xValues = models{ $0.x }.map{ ... }

应该是

代码语言:javascript
复制
let xValues = models.map{ $0.x }.map{ ... }

此外,ChartAxisValueInt()使用一个Int作为第一个参数,但是x坐标是CGFloats。

代码语言:javascript
复制
let xValues = models
    .map { $0.x }
    .map { ChartAxisValueFloat($0, labelSettings: labelSettings) }

但是,正如@Ixx正确地注意到的那样,在一个映射中可以更有效地完成同样的任务:

代码语言:javascript
复制
let xValues = models
    .map { ChartAxisValueFloat($0.x, labelSettings: labelSettings) }
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30427651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档