gpt4 book ai didi

ios - 如何在结构中设置枚举以用作标识符来初始化自定义对象

转载 作者:行者123 更新时间:2023-11-28 13:50:27 29 4
gpt4 key购买 nike

我想为我的结构设置一个自定义枚举,以便在我将它们全部放入同一个数组后能够识别它们自己。我使我的结构符合相同的协议(protocol),这样我就不必使用 Any/AnyObject 但现在我在正确的方法上遇到了麻烦,无法在结构中设置枚举并创建一个函数来将对象恢复为原来的状态之后的状态。

我目前将所有结构都放在一个数组中,方法是让它们都符合相同的协议(protocol)

struct Artist: Decodable, ContentWrapper {
let name: String
let image: [[String:String]]

init(name: String, image: [[String:String]]) {
self.name = name
self.image = image
}
}

struct Album: Decodable, ContentWrapper {
let name: String
let artist: String
let image: [[String:String]]

init(name: String, artist: String, image: [[String:String]]) {
self.name = name
self.artist = artist
self.image = image
}
}

enum myType {
case type(String)
}


protocol ContentWrapper {
}

我需要为每个结构设置一个枚举,以便能够识别它们自己,然后能够有一个函数在从数组接收它们后将它们返回到它们的原始对象。

最佳答案

您想在此处使用的工具是一个用于保存数据的枚举,而不是一个用于保存类型的枚举。完全摆脱 ContentWrapper 并将其替换为:

enum Element {
case artist(Artist)
case album(Album)
}

var elements: [Element] = []

现在 elements 是一组“艺术家或专辑”,我相信这就是您正在寻找的。你在 Swift 中说“类型或其他类型”的方式是使用枚举。

要处理不同的元素类型,通常你会使用switch:

for element in elements {
switch element {
case .artist(let artist):
// Perform "artist-like" functions on `artist`
break
case .album(let album):
// Perform "album-like" functions on `album`
break
}
}

关于ios - 如何在结构中设置枚举以用作标识符来初始化自定义对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54700358/

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