Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在swiftUI列表的切换中使用json属性?_Json_Swift_Swiftui_Toggle - Fatal编程技术网

如何在swiftUI列表的切换中使用json属性?

如何在swiftUI列表的切换中使用json属性?,json,swift,swiftui,toggle,Json,Swift,Swiftui,Toggle,我为iPhone/iPad/Mac开发了一个快速用户界面应用程序。该应用程序列出了我的电影(第一次观看)以及信息,如每部电影的备注以及是否看过该电影。我有一个JSON文件,其中包含: id:Int,唯一标识符 名字:字符串,电影的标题 idL:字符串,标题的第一个字符 注:Int,每个胶片的注释(0到10之间) isShow:Bool,说明这部电影是否被看过 我创建了一个切换,只显示isShow=false的电影,但我无法将此切换与我的JSON属性链接… 以下是我的项目: JSON文件:我相信在


我为iPhone/iPad/Mac开发了一个快速用户界面应用程序。该应用程序列出了我的电影(第一次观看)以及信息,如每部电影的备注以及是否看过该电影。

我有一个JSON文件,其中包含:

  • id:Int,唯一标识符
  • 名字:字符串,电影的标题
  • idL:字符串,标题的第一个字符
  • 注:Int,每个胶片的注释(0到10之间)
  • isShow:Bool,说明这部电影是否被看过
  • 我创建了一个切换,只显示isShow=false的电影,但我无法将此切换与我的JSON属性链接…

    以下是我的项目:

    JSON文件:

    我相信在保存
    电影时,不会重新加载
    用户数据

    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())
    )
    

    谢谢你的回答,你可能是对的,我是swiftUI的初学者,我不知道该怎么做来纠正这个问题…你可以在userData中使用名为
    load
    的函数,里面有
    fetcher.load
    。您可以随时从
    视图
    调用它来重新加载数据。好的,谢谢,但我的问题是,当我调用self时。$movie.isShow在切换中,它不起作用。。。因为还不知道。。。你能给我解释一下吗?其中一种方法是使用
    @State private var isToggleOn=false
    并在切换中使用它。然后使用self.movie.isShow=isToggleOn
    。这就是我在想的,我在哪里写self.movie.isShow=isToggleOn
    ?就像我写的
    @State private var isToggleOn=false
    init() {
        fetcher.load { (movies) in
            if let movies = movies {
                self.movies = movies
            }
        }
    }