gpt4 book ai didi

arrays - Swift 如何将自定义数组转换为枚举数组

转载 作者:行者123 更新时间:2023-11-28 07:32:38 25 4
gpt4 key购买 nike

我有一个应用程序使用自定义数组来填充 TableView 中的数据。我想在表格 View 中将这些数据分成两部分。通过一些教程并找到了我喜欢使用枚举的方法。教程应用程序使用 [[String: String]]]() 可以正常工作。

每次尝试将我的数据转换为 [[String: String]]]() 都失败了,我无法将我拥有的数据转换为枚举格式。

下面的代码是我正在尝试做的一个例子,但我尝试了很多其他方法也没有用。

如有任何建议,我们将不胜感激。

新代码,当前错误:

“无法将类型 '[TableViewController_Main.Category]' 的值分配给类型 'ArraySlice<[TableViewController_Main.Category]>'”

enum TableSection: Int {
case requests = 0, appointments, total
}

struct Category {
var clientName: String
var appType: String
var appDateTime: String
var status: String

var photo: UIImage?
}

var dataView = [[TableSection: Category]]()
var dataViewLoop = [Category]()

func SetData() {

for tableData in datas {

guard let data1 = Category(clientName: tableData.client_name ?? "",
appType: tableData.app_type ?? "",
appDateTime: tableData.app_date_time ?? "",
status: tableData.app_date_time ?? "",
photo: tableData.photo ?? nil) as Category? else {
fatalError("Unable to instantiate")
}

dataViewLoop += [data1]
}

dataView[.appointments] = dataViewLoop.filter({ $0.status == "confirmed" })
dataView[.requests] = dataViewLoop.filter({ $0.status == "request" })
// Cannot assign value of type '[TableViewController_Main.Category]' to type 'ArraySlice<[TableViewController_Main.Category]>'

最佳答案

我必须更正我上面的评论。您的 dataView 应该是 [TableSection: [Category]] 类型。

现在谈谈您的 setData 函数。在您的循环中,您在初始化类别时使用 nil 合并运算符 ?? 。也许我遗漏了一些东西,但我看不出这会如何导致 fatal error 。 Category 上没有可失败的初始化器。现在我不完全知道 datas 是什么以及它来自哪里,但如果其中的某些属性是可选的,我建议在类别中也将它们设为可选。

然后尝试使用 map 来转换您的数据。这是一个例子:

var dataView = [TableSection: [Category]]()
var dataViewLoop = (0 ..< 10).map { i -> Category in
let status = i % 2 == 0 ? "confirmed" : "request"

return Category(clientName: "\(i)", appType: "\(i)", appDateTime: "nil", status: status, photo: nil)
}

dataView[.appointments] = dataViewLoop.filter({ $0.status == "confirmed" })
dataView[.requests] = dataViewLoop.filter({ $0.status == "request" })

关于arrays - Swift 如何将自定义数组转换为枚举数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54252478/

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