【发布时间】:2017-12-19 10:27:07
【问题描述】:
我想要一个数组来存储生成四边形和三次曲线所需的数据。为了做到这一点,我做了以下事情:
- 定义了具有 start、end、cp1 和 cp2 属性的 CubicCurve 结构
- 定义了具有 start、end 和 cp 属性的 QuadCurve 结构
- 定义了一个名为 Path 的枚举,其中包含具有 CubicCurve 关联值的cubicCurve 和具有 QuadCurve 关联值的 quadCurve。
- 定义了一个类型为 Path
[Path]()的数组
我定义了一个 CubicCurve 但不能将它添加到数组中,因为数组是 Path 类型的:
struct CubicCurve {
var start : CGPoint
var end : CGPoint
var cp1 : CGPoint
var cp2 : CGPoint
}
struct QuadCurve {
var start : CGPoint
var end : CGPoint
var cp : CGPoint
}
enum Path {
case cubicCurve(CubicCurve)
case quadCurve(QuadCurve)
}
let paths = [Path]()
let start = CGPoint(100,100)
let end = CGPoint(500,500)
let cp1 = CGPoint(250,200)
let cp2 = CGPoint(150,300)
let curve = CubicCurve(start: start, end: end, cp1: cp1, cp2: cp2)
paths.append(curve) // Doesn't work - path is of type Path, not CubicCurve
我如何真正将我的值放入我的数组中?
我没有接受过正式的 CS 培训(好吧 - 几年前的“A”级 CS)并且对 Swift 的类、结构和枚举的更高级使用有点模糊,所以我可能完全错了. 我认为我所做的比使用[AnyObject] 或[Any] 更好。
【问题讨论】: