MVVM 并将可选值传递给 viewModel
Posted
技术标签:
【中文标题】MVVM 并将可选值传递给 viewModel【英文标题】:MVVM and passing over optinal value to the viewModel 【发布时间】:2021-08-10 06:25:04 【问题描述】:我正在尝试使用 MVVM 方法来为我的 swiftui 应用程序工作,但我遇到了一个问题,即可选变量似乎没有被正确传递。
因此,您可以在主视图中单击“新建”或“编辑”,在编辑时我想将值传递过来,此屏幕的代码: 按钮:
Button
selectedTag = tag
isShowingEdit.toggle()
label:
Image(systemName: "pencil")
.font(Font.system(size: 30, weight: .bold))
.foregroundColor(.gray)
导航链接:
NavigationLink(destination: TagsCreatingView(viewModel: TagCreateViewModel(tag: selectedTag)), isActive: $isShowingEdit) EmptyView()
TagCreateViewModel 初始化如下所示:
init(tag: TagMO?)
if let tag = tag
self.tag = tag
title = tag.title
selectedColor = Int(tag.color)
如果我在单击按钮时在 selectedTag 上进行打印,则它具有正确的值,但在 viewModel 上它将为零。此外,如果我单击编辑按钮两次,它按计划工作并且标签不是零(两次我的意思是单击编辑,在另一个屏幕上单击取消然后再次编辑..)
【问题讨论】:
【参考方案1】:问题是目标视图内部有
@StateObject var viewModel: TagCreateViewModel
将其更改为 @ObservedObject var viewModel: TagCreateViewModel
在所有权正确后解决了这个问题:9
【讨论】:
以上是关于MVVM 并将可选值传递给 viewModel的主要内容,如果未能解决你的问题,请参考以下文章
“致命错误:在展开可选值时意外发现 nil”,同时调用协议方法
IOS Swift 致命错误:在展开可选值时意外发现 nil