gpt4 book ai didi

swift - 如何在 Swift 的数组中存储 2 种类型的 CGPath 定义

转载 作者:可可西里 更新时间:2023-11-01 00:56:55 24 4
gpt4 key购买 nike

我想要一个数组来存储生成四边形和三次边曲线所需的数据。为此,我做了以下工作:

  1. 定义了具有属性 start、end、cp1 和 cp2 的 CubicCurve 结构
  2. 定义了具有属性 start、end 和 cp 的 QuadCurve 结构
  3. 定义了一个名为 Path 的枚举,其中 cubicCurve 具有 CubicCurve 关联值,quadCurve 具有 QuadCurve 关联值。
  4. 定义了一个 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] 更好。

最佳答案

尝试使用

paths.append(.cubicCurve(curve))

因为“曲线”是 CubicCurve 类型的实例,而“Path.cubicCurve(curve)”是路径的实例。

关于swift - 如何在 Swift 的数组中存储 2 种类型的 CGPath 定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45100945/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com