xcode 索引超出范围且未传递值

u91tlkcl  于 2022-12-19  发布在  其他
关注(0)|答案(1)|浏览(154)

我有一个viewModel文件,其中初始化了两个数组,这是用户类型User和消息类型lastM的用户。我将在下面的例子中添加数组打印出来时的样子。我试图在视图文件中引用这些数组。在init时,视图会获得传递给它的用户。通过将用户传递到视图中,我试图在Users数组中查找此用户索引。然后我想取这个索引,并得到lastM数组中相同索引的元素,每次我这样做的时候,都会得到致命错误索引超出范围。
视图文件

let user: User
    @ObservedObject var viewModel = MessageViewModel()
    var body: some View {
        HStack(spacing: 20){
            let index = viewModel.users.firstIndex(of: user)
            let value = viewModel.lastM[index ?? 0]

            Text(value.text)
            Text("\(value.timestamp)")

viewModel文件中的数组

@Published var users = [User]()
    @Published var lastM = [Message]()

打印出users数组如下所示:
[应用程序用户(_id:文档ID<Swift.String>(值:可选(“uosdPla 4v 6 Mh 7ZDL 9 lyzeqkHVOx 1”)),用户名:“贝利”,全名:“海莉斯坦”,配置文件图像URL:“",电子邮件:“Stacymc@gmail.com“),...更多用户]
输出lastM数组如下所示:
[应用程序消息(id:“编号7 F26 B3 F-6 F0 A-4A 28 -8426-411149942733”,文本:“嗨”,收到:假,时间戳:2022年12月18日22:46:19 + 0000),...更多消息]

uklbhaso

uklbhaso1#

尝试类似这样的方法,以避免...error index out of range

if let index = users.firstIndex(of: user), index < lastM.count {
            let value = viewModel.lastM[index]
            Text(value.text)
            Text("\(value.timestamp)")
        } else {
            Text("no user")
        }

相关问题