arrays - 如何在 Swift 中合并结构数组
问题描述
struct Message {
var id: Int
let referenceNumber : String
let transactionNumber : String
let transactionDate : String
}
struct Amount: Identifiable {
var id: Int
let value: Int
let date: String
var message = [Message]()
}
let messages : [Message] = [
.init(id: 0, referenceNumber: "RXX123", transactionNumber: "TXX123", transactionDate: "Jan/12/2021"),
.init(id: 1, referenceNumber: "RXX124", transactionNumber: "TXX124", transactionDate: "Feb/12/2021"),
.init(id: 2, referenceNumber: "RXX125", transactionNumber: "TXX125", transactionDate: "Jan/12/2021")
]
var amounts: [Amount] = [
.init(id: 0, value: 1000,date: "Jan/12/2021"),
.init(id: 1, value: 2000,date: "Feb/12/2021"),
.init(id: 2, value: 3000,date: "Jan/12/2021")
]
我如何将两个结构数组与标识符“id”结合起来以形成一个工作字典,以便当有人点击 Amount 并将它们带到显示相关消息的下一个视图时,它可以用于 IOS 应用程序的各种视图TxnDate、RefNo 等的参考。
我正在使用它 Xcode 项目制作演示应用程序
struct FrontView: View {
init(){
UITableView.appearance().backgroundColor = .clear
UITableViewCell.appearance().backgroundColor = .clear
}
@State private var selections: String? = nil
let messages : [Message] = [
.init(id: 0, referenceNumber: "RXX123", transactionNumber: "TXX123", transactionDate: "Jan/12/2021"),
.init(id: 1, referenceNumber: "RXX124", transactionNumber: "TXX124", transactionDate: "Feb/12/2021"),
.init(id: 2, referenceNumber: "RXX125", transactionNumber: "TXX125", transactionDate: "Jan/12/2021")
]
var amounts: [Amount] = [
.init(id: 0, value: 1000,date: "Jan/12/2021"),
.init(id: 1, value: 2000,date: "Feb/12/2021"),
.init(id: 2, value: 3000,date: "Jan/12/2021")
]
var body: some View{
NavigationView{
VStack(alignment: .center){
List{
ForEach(amounts){amount in
NavigationLink(
destination: Text(amount.message),//not working
tag: "",
selection: $selections) {UserRow(user: amount)}
}
}.background(DiamondBackground().edgesIgnoringSafeArea(.all))
}
}
.navigationBarTitle(Text("Dynamic List"))
}
}
解决方案
我建议创建一个字典,并通过 Id 附加一个包含两个对象的元组,它将如下所示:
typealias MessageAmount = (Message,Amount)
var dict = [String:MessageAmount]
for (index,message) in messages.enumerated() {
dict[message.id] = (message,amounts[index])
}
推荐阅读
- java - 将用户搜索到 ldap 时出现问题
- sed - 如何使 sed 从管道中获取输入,并插入到文件中
- pointers - 实现结构时将指针作为函数参数
- amazon-web-services - 如何正确调整云实例的大小?
- c# - 为什么 Automapper 错误不包括目的地详细信息?
- uefi - 等待按键 GNU EFI
- angular - 为什么删除 BehaviourSubject 会导致我的服务延迟 3-4 秒?
- c - 抽象语法树的代数化简
- r - 在 R 中使用 mfrow:如何给每个子图一个不同的 y 标签和 x 轴一个标签
- javascript - 由于施加的力不正确,我的网格在页面加载时迅速消失?