在我的AdminView_Previews
上,我试图显示我的AdminView
,并且从视图中要求它传递类型为userInfo
的名为UserModel
的可绑定对象。
UserModel
有一个来自immagine
的变量URL?
这是我的预览:
struct AdminView_Previews: PreviewProvider {
static var previews: some View {
Group {
NavigationView{
AdminView(dm: DataManager(), userInfo: bindModelUserInfo())
}
NavigationView{
AdminView(dm: DataManager(), userInfo: bindModelUserInfo())
}
.previewDisplayName("Test")
.background(Color(.systemBackground))
.environment(\.colorScheme, .dark)
}
}
}
我的bindingModelUserInfo()
:
func bindModelUserInfo() -> Binding<UserModel?> {
var variabile : UserModel = UserModel(username: "dm1886", email: "dsadsa@gmail.com", userID: "test", adminLevel: "user", immagine: nil )
let boolVariableBinding : Binding<UserModel?> = Binding(get: { variabile },
set: { variabile = $0! })
return boolVariableBinding
}
如果我将nil传递给immagine
,则预览无法加载。
任何想法如何解决此问题?如何将URL
immagine
传递给预览?
在模拟器应用上,一切正常。
答案 0 :(得分:1)
您可以创建一个@State变量,将其像这样输入到userInfo中。
struct AdminView_Previews: PreviewProvider {
@State var mockUserInfo: UserModel = UserModel(username: "dm1886",
email: "dsadsa@gmail.com",
userID: "test",
adminLevel: "user",
immagine: nil)
static var previews: some View {
Group {
NavigationView{
AdminView(dm: DataManager(), userInfo: $mockUserInfo)
}
NavigationView{
AdminView(dm: DataManager(), userInfo: $mockUserInfo)
}
.previewDisplayName("Test")
.background(Color(.systemBackground))
.environment(\.colorScheme, .dark)
}
}
}
您是否也可以共享AdminView
的代码?变量immagine
可能不起作用,因为您需要处理URL?
中AdminView
的大小写。我不知道您的AdminView
内是什么,但是处理immagine
为nil时返回EmptyView
的路径可能会解决问题。