如何在带有 swiftUI 列表的切换中使用 json 属性?
Posted
技术标签:
【中文标题】如何在带有 swiftUI 列表的切换中使用 json 属性?【英文标题】:How to use json attribute in a toggle with swiftUI list? 【发布时间】:2020-06-01 08:42:51 【问题描述】:我为 iPhone/iPad/Mac 开发了一个 SwiftUI 应用程序。该应用程序列出了我的电影(第一次观看)以及每部电影的注释等信息以及是否看过电影。我有一个 JSON 文件,其中包含:
-
id : Int,唯一标识符
nom : 字符串,电影标题
idL : 字符串,标题的第一个字符
note : Int,每部电影的注释(0 到 10 之间)
isShow : 布尔型,表示是否看过电影
我创建了一个仅显示 isShow=false 的电影的切换,但我无法将此切换与我的 JSON 属性链接...
这是我的项目:https://github.com/thomjlg/Films-APP JSON 文件:https://gist.githubusercontent.com/thomjlg/0782e9e8e27c346af3600bff9923f294/raw/9705fb0c6b40eae59578755b86e331bea257972b/films2.json
【问题讨论】:
【参考方案1】:我相信当您保存 movies
时,您不会重新加载 userData
。
Toggle("Film", isOn: self.$movie.isShow)
.onTapGesture
self.userData.fetcher.save(movies: self.userData.movies)
self.movie.isShow = !self.movie.isShow
print(self.movie.isShow)
fetcher.save(movies:)
只是保存您的电影,但 UserData
仅创建一次,电影仅在 init
中加载:
window.rootViewController = UIHostingController(rootView: contentView
.environmentObject(UserData())
)
init()
fetcher.load (movies) in
if let movies = movies
self.movies = movies
【讨论】:
感谢您的回答,您可能是对的,我是 swiftUI 的初学者,我不知道如何解决这个问题... 您可以在 userData 中有一个名为load
的函数,其中包含fetcher.load
。您可以在想要重新加载数据时从View
调用它。
好的,谢谢,但我的问题是当我在切换中调用 self.$movie.isShow 时,它不起作用......因为它不知道......你能给我解释一下吗?
其中一种方法是使用@State private var isToggleOn = false
并在切换中使用它。然后使用self.movie.isShow = isToggleOn
。
这就是我在想的,我在哪里写self.movie.isShow = isToggleOn
?就像我写@State private var isToggleOn = false
的地方一样?以上是关于如何在带有 swiftUI 列表的切换中使用 json 属性?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 TabView SwiftUI 中保存视图的列表状态