首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >没有找到类型的ObservableObject

没有找到类型的ObservableObject
EN

Stack Overflow用户
提问于 2020-01-06 13:49:46
回答 1查看 2.7K关注 0票数 1

我试图快速访问一个列表与最喜欢的项目,从主视图与一个模态表。喜欢的对象保存在EnvironmentObject数组中。在模态表中有一个按钮,基本上可以从收藏列表中添加/删除对象。但是,当您删除一个项目时,EnvironmentObject将为空,应用程序崩溃:

线程1:致命错误:没有找到类型为FavouritesListObservableObject

日志上写着:

作为该视图的祖先,FavouritesListView.environmentObject(_:)可能会丢失.:file

如何确保它自然返回到ContentView

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import SwiftUI

struct ContentView: View {
    @EnvironmentObject var favouriteList: FavouritesList
    @State private var presentingSheet = false

    var body: some View {
        NavigationView {
            List {
                NavigationLink(destination: JudgementsView()) {
                    Text("Judgements")
                }
                NavigationLink(destination: SecondaryView()) {
                    Text("Secondary acts")
                }
                ScrollView(.horizontal, showsIndicators: false) {
                    VStack {
                        if favouriteList.items.isEmpty {
                            Text("Nothing favoured")
                        } else {
                            ForEach(favouriteList.items, id: \.self) { id in
                                VStack {
                                    HStack {
                                        ForEach(judgementsTAXraw.filter {
                                            $0.id == id
                                        }) { judgement in
                                            NavigationLink(destination: FileViewer(file: judgement.id)) {
                                                Button(judgement.title) {
                                                    self.presentingSheet = true

                                                }.sheet(isPresented: self.$presentingSheet) {
                                                    ModalSheet(file: judgement.CELEX)

                                                }
                                            }

                                        }
                                    }
                                    HStack {
                                        ForEach(secondaryTAXraw.filter {
                                            $0.id == id
                                        }) { secondary in
                                            NavigationLink(destination: FileViewer(file: secondary.id)) {
                                                Text(secondary.title).padding()
                                            }

                                        }
                                    }

                                }


                            }
                        }

                    }
                }

            }
            .navigationBarTitle(Text("Test"))
        }
    }
}

struct ModalSheet: View {
    var file: String

    @State private var showCopySheet = false

    @EnvironmentObject var favouriteList: FavouritesList
    var body: some View {
        NavigationView {
            Text("Modal").navigationBarItems(trailing:
                Button(action: {
                    self.showCopySheet = true
                }) {
                    Image(systemName: "doc.on.doc").frame(minWidth: 40)
                }.actionSheet(isPresented: $showCopySheet) {
                    ActionSheet(title: Text("What do you want to do?"), buttons: [
                        .destructive(Text("favText"), action: {
                            if let index = self.favouriteList.items.firstIndex(of: self.file) {

                                self.favouriteList.items.remove(at: index)


                            } else {
                                self.favouriteList.items.append(self.file)

                            }
                        }),
                        .cancel()
                    ])
                }.frame(minWidth: 50)
            )
        }
    }
}
EN

回答 1

Stack Overflow用户

发布于 2020-01-06 19:49:30

我认为你需要把你的favouriteList像environmentObject一样传递给ModalSheet

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ModalSheet(file: judgement.CELEX).environmentObject(favouriteList)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59619439

复制
相关文章
ObservableObject研究
我是在去年阅读王巍写的《SwiftUI 与 Combine 编程》才第一次接触到单一数据源这一概念的。
东坡肘子
2022/07/28
2.4K0
ObservableObject研究
没有SortedList,如何快速找到中值
做了这么多道题,我们发现总是需要某种数据结构辅助我们解决一些问题,算法跟数据结构总是不分家。一般我们使用的语言都会给我们内置常用的数据结构,堆啊栈啊列表啊等等,用多了的人对于它们的作用想必还是比较清楚的。
写代码的阿宗
2020/08/24
6210
Archiva 仓库提示文件没有找到
如果提示的是 404 的话,提示你的 Archiva 在可能的源仓库中已经进行了搜索,但是没有找到。
HoneyMoose
2020/04/13
6550
Archiva 仓库提示文件没有找到
解决Typecho插件的配置信息没有找到
入坑Typecho已经一个多月了,在这期间Typecho的插件也开发了两个(其实我现在正在开发第三个,就不告诉你是个采集插件),然后大大小小的坑也踩了不少,其实最深的坑还是启用插件时提示“插件的配置信息没有找到”,这个具体原因就是因为首次启用插件时,在config()里面获取配置信息,这当然是获取不到的,我们复现一个这个错误。
用砖头敲代码
2022/08/30
1.1K0
org/apache/hadoop/hbase/CompatibilityFactory(scan)没有找到类的解决办法
在做spark连接Hbase的时候,总会蹦出一些问题。总结起来就是各种类的找不到。 如:org/apache/hadoop/hbase/CompatibilityFactory没有找到类, E xception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/client/Scan 如此等等。 这些问题的核心还是没有正确加载Hbase所需要的库。 而Hbase中的一些库存在的会与spark中有一些版本
sparkexpert
2018/01/09
1.8K0
找到java代码中没有被使用的公用方法
最近,我打算对我们项目的代码进行清理,准备把一些没有被使用到的公用方法清理掉,但是我在网络找了一遍,像PMD,Findbugs等静态工具,都只能找到没有被使用的私有方法。
源哥
2018/08/28
1.6K0
网站备案后没有找到站点
A1 问题: A2 原因: 您没有将此域名或IP绑定到对应站点! 配置文件未生效! A3 解决: 检查是否已经绑定到对应站点,若确认已绑定,请尝试重载Web服务(大部分是这个问题,添加对应站点和开放端
CoreDao
2021/04/13
3.3K1
网站备案后没有找到站点
MONGODB Sharding 安装 与网上我没有找到的 Answer
本来今天应该是MYSQL的文字,不过最近搞的MONGO比较多,测试MGR 的集群出了问题正在解决,所以今天和明天都是MONGODB 的文字
AustinDatabases
2019/08/30
5400
MONGODB Sharding 安装 与网上我没有找到的 Answer
磁盘显示没有初始化找到数据法子[通俗易懂]
没有初始化是因为分区表损坏了,导致移动硬盘出现没有初始化。磁盘显示没有初始化找到数据法子
全栈程序员站长
2022/11/08
1.8K0
磁盘显示没有初始化找到数据法子[通俗易懂]
Wireshark安装后打开显示没有找到接口
我遇到这个问题是出现在Win10系统中,出现这个问题的原因是Wireshark中由于自带的Winpcap不支持Win10。出现如图所示:
全栈程序员站长
2022/07/23
4.5K0
Wireshark安装后打开显示没有找到接口
native2ascii没有找到_ascii数字转换
native2ascii是sun java sdk提供的一个转码工具, 用来将别的文本类文件(比如 *.txt, *.ini, *.properties, *.java 等等)编码转为Unicode编码。
全栈程序员站长
2022/10/02
8580
native2ascii没有找到_ascii数字转换
问题:ssm关于mybatis没有找到配置问题(not found)
1.maven项目pom.xml配置中没有将该配置文件作为资源文件引入,会导致找不到sql,解决办法就直接在maven的build下面加上如下代码。
逍遥壮士
2020/09/18
4730
mac重启,开启apache时报错~~~镜像没有找到
其他选项是卸载您的php公式,并从源重建,而不是使用瓶装版本。这样,php将使用当前安装的版本jpeg。假设你正在处理php71:
lin_zone
2018/08/15
4850
php启动服务过程中报xx函数没有找到的错误
启动php服务的时候,它会包Fatal error: Uncaught Error: Call to undefined function xxx(),这个问题一般定位为在当前php环境中某个扩展没有开启或者没有安装
槽痞
2020/12/15
8350
php启动服务过程中报xx函数没有找到的错误
Java 日期类型比较没有返回正确的结果
最近在数据库处理的时候发现日期对比的时候没有返回正确的结果。 但是保存的时间实际上是相同的。 代码如下: if (!mlsPhoto.getDateUpdate().equals(photo.getDateUpdate())) { } 因为这里使用了 equals 方法。 问题解决 经过 Debug 后,这 2 个日期的纳秒数是不同的,查看下对象如下。 我们会发现其中一个对象有纳秒,一个对象没有。 但是 fastTime 是相同的。 如果使用 equals 那么这个方法比较的是毫秒,所以是不相等的。
HoneyMoose
2021/12/21
3.5K0
微信小程序 没有找到 node_modules 目录
此时小程序项目目录下面已经有了node_modules 目录; 但是点击小程序构建npm 还是报 没有找到node_modules 目录
用户1437675
2019/02/22
2.5K0
微信小程序 没有找到 node_modules 目录
spark submit中没有找到hbase中的*/hbase/client/put类的解决办法
在Eclipse或者IDEA中进行spark与hbase联接操作时,都没有错误,然后发现当进行spark-submit提交的时候,却发现找不到hbase库的问题。 如截图所示。 这个问题的核心肯定是找
sparkexpert
2018/01/09
7900
spark submit中没有找到hbase中的*/hbase/client/put类的解决办法
Hibernate 元数据模型(MetaModel)提示类没有找到错误
java: java.lang.ClassNotFoundException: org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor
HoneyMoose
2022/07/13
7020
Hibernate 元数据模型(MetaModel)提示类没有找到错误
Hibernate 元数据模型(MetaModel)提示类没有找到错误
java: java.lang.ClassNotFoundException: org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor
HoneyMoose
2022/08/15
5360
Hibernate 元数据模型(MetaModel)提示类没有找到错误
关于没有找到mspdb60.dll文件,解决方法
例使用cygwin或msys编译ffmpeg时,如果机器上只安装vs6.0时,创建lib文件就会出现上述错误。
雪影
2018/08/02
5570

相似问题

SwiftUI致命错误:没有找到类型的ObservableObject

15

快速致命错误:没有找到类型会话的ObservableObject

12

没有发现ObservableObject类型的PageSettings

11

“没有找到类型的ObservableObject”(但我已经包括了environmentObject?)

210

SwiftUI致命错误:未找到“”类型的ObservableObject

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文