combine相关内容

使用ObservableObject时视图不会更新

我正在尝试使用SwiftUI构建Instagram克隆应用. 我正在通过 Firebase 获取数据,并试图在每次服务器中的数据更改时实现UI更新. 由于某种原因,当我第一次打开应用程序并获取数据时,会调用我视图的 body ,但是UI不变.我什至放了一个断点,看到 body 被调用并包含正确的信息,只是UI没有更新. 我的应用程序中有几个选项卡,当我切换到另一个选项卡(除了 T ..
发布时间:2021-04-23 19:15:05 移动开发

onReceive String.publisher导致无限循环

我在View中使用两个发布者: A:String.publisher B:ObservableObject包含一种@Published字符串类型 如果我监视发布者A,则会遇到无限循环.但是监视发布者B是可以的! 导入SwiftUI进口联合收割机类模型:ObservableObject {@Published var someBool =否@Published var name: ..
发布时间:2021-04-23 19:15:02 移动开发

合并Future Publisher不会被释放

我正在使用Combine Future来包装异步块操作,并向该发布者添加订阅者以接收值.XCode内存图和仪器泄漏图本身未显示对这些将来对象的引用.我不知道他们为什么还在附近. func getUsers(forceRefresh:Bool = false)->AnyPublisher{让future = Future{[弱自我]承诺警卫队让params ..
发布时间:2021-04-23 19:14:59 移动开发

Swift Combine:`append`不需要输出相等吗?

使用Apple的Combine,我想在第一个发布者 foo 完成后添加发布者 bar (可以将 Failure 限制为从不).基本上我想要 RxJava的 andThen . 我有这样的东西: let foo:AnyPublisher=/*与实际发布者无关*/让栏:AnyPublisher=/*与实际发布者无关*///想要连接bar ..
发布时间:2021-04-23 19:14:56 其他开发

是什么导致在此代码中调用updateUIView()?

我知道@State变量的更改会通知@Binding状态已更改,但是什么导致updateUIView()方法被调用?在@Binding和调用之间显然存在一些隐藏的连接,但这是如何工作的? //Experiment_Map_View.swift导入SwiftUI导入MapKitstruct Experiment_Map_View:UIViewRepresentable {@Binding var t ..
发布时间:2021-04-23 19:14:53 其他开发

订阅对@Published的更改

我正在尝试将 query 的值绑定到位于 SwiftUI 视图中的搜索框. class DataSet:ObservedObject {...@已发布的var查询:String =“"在里面() {let sub = AnySubscriber(receiveSubscription:无,receiveValue:{查询打印(查询)返回.unlimited})se ..
发布时间:2021-04-23 19:14:47 移动开发

异步下载图片时,SwiftUI和Combine不能正常工作

当我尝试使用SwiftUI&结合异步下载图像,效果很好.然后,我尝试将其实现为动态列表,发现只有一行(最后一行)可以正确显示,其他单元格中的图像丢失了.我已经用断点跟踪了代码,并且我确定图像下载过程在其他过程中是成功的,但是只有最后一行会触发@ObjectBinding来更新图像.请检查我的示例代码,并让我知道是否有任何错误.谢谢! struct UserView:视图{变量名称:字符串@Ob ..
发布时间:2021-04-23 19:14:45 移动开发

Alamofire + Combine + MVVM请求示例

在我的视图控制器中,我有一个属性 items ,可以订阅并呈现我的视图. 对于这个视图控制器,我有一个视图模型,其中有类似如下的加载方法: @Published私有(组)var项目:[Item] = []func load(params:[String:Any] = [:]){self.isLoading = trueself.subscription = WebRepo().index ..
发布时间:2021-04-23 19:14:42 移动开发

SwiftUI发布的更新不刷新

我正在尝试通过一系列嵌套的类来管理用户状态. 应用程序的基本视图使用 globalState 环境对象.该对象允许用户向内和向外查看其他视图. @EnvironmentObject var globalState:GlobalState//查看代码文本("Logged In").opacity(globalState.user.isLoggedIn?1:0)文本(“请登录").opaci ..
发布时间:2021-04-23 19:14:36 移动开发

“某些协议"导致类型不符合协议

我不明白为什么它不能编译.如果我从 P 类型中删除了 where 限制,它就会生效. import合并协议Foo {关联类型P:发布者,其中P.Output == Intvar发布者:P {get}}struct Bar:Foo {var Publisher:某些Publisher {只是(1)}} 该错误表明类型'Bar'不符合协议'Foo'.我猜这是因为 publisher 返回类型不 ..
发布时间:2021-04-23 19:14:33 移动开发

使用Swift的Combine框架编写retryIf运算符

我开始了解Swift + Swift的Combine框架,并想检查我实现 retryIf(retries :, shouldRetry:)运算符的尝试是否有意义.特别是,我很好奇所有 .eraseToAnyPublisher 是否都是预期的/惯用的. 扩展程序发布商{func retryIf(retries:Int,shouldRetry:@转义(Self.Failure)-> Bool)->A ..
发布时间:2021-04-23 19:14:30 移动开发

如何使用Combine遍历发布者的输出?

我正在重写我的Hacker News阅读器,以更广泛地使用Combine.我有两个函数都返回一个 AnyPublisher ,其中一个从服务器获取一堆HN故事的ID,另一个通过ID获取故事.我不确定如何遍历 fetchStoryIds 的结果,使用id运行 fetchStory 并以 Story 对象的数组结束结合起来. import合并进口基金会struct HackerNewsServic ..
发布时间:2021-04-23 19:14:27 移动开发

滚动视图中的ForEach直到交互才更新

添加到数组中或从数组中删除时,除非用户与 ScrollView 进行交互,否则视图不会更新. Model 是一个 ObservableObject ,它在应用程序生命周期的早期被声明为 StateObject ,然后作为 EnvironmentObject . 当添加到 store.profile!.tasks.append()或从视图中删除数据时,数据只是带有对象数组的自定义 Pro ..
发布时间:2021-04-23 19:14:24 其他开发

URLSession dataTaskPublisher在延迟特定错误后重试

我要执行的操作是重新发送针对特定类型错误的请求.假设发生超时错误,具体来说,我想在3秒的延迟后重试该请求.显然,如果请求成功执行,我不希望有任何延迟. 我正在此处 使用建议的方法 var cancellables = Set()让url = URL(字符串:"https://www.apple.com")!让sessionConfiguration = ..
发布时间:2021-04-23 19:14:18 移动开发

合并框架更新用户界面无法正常工作

我想尝试使用 Combine 框架,非常简单的用法,按 UIButton ,并更新 UILabel . 我的想法是: 添加发布者 @Published var cacheText:字符串? 订阅 $ cacheText.assign(发送至:\ .text,位于:cacheLabel) 按下按钮时分配一个值. cacheText =" testString ..
发布时间:2021-04-23 19:14:15 移动开发

使用2x Publisher快速组合URLSession检索数据集/照片

我的大部分功能都可以正常工作并返回我想要的功能.但是,在将 photos 数组放入 response 中并将它们分配给适当的 employees 时,我有点放屁.能够渲染它们.这是怎么回事: 有4种可编码结构:响应,公司, Employee 和 ProfileImages . Response 是API返回的主要对象,然后解码为具有 [Employee] 数组的 Company ,每个都有3 ..
发布时间:2021-04-23 19:14:12 移动开发

为什么“用户默认值"发布者会多次触发

我正在订阅内置的User Defaults扩展名,但似乎不必要地触发了多次. 这是我正在使用的代码: import合并进口基金会导入PlaygroundSupport扩展名UserDefaults {@objc var someProperty:布尔{得到{bool(forKey:" someProperty")}set {set(newValue,forKey:"somePropert ..
发布时间:2021-04-23 19:14:09 移动开发

使用Combine的Publisher在SwiftUI Image中从远程URL异步加载图像

我一直在寻找从远程服务器图像URL异步加载图像的好的解决方案.在线上有很多解决方案.可惜的是,Apple没有为如此普遍的事情提供本地服务.无论如何,我发现 Sundell的博客确实很有趣,并从中吸取了很多好处创建自己的ImageLoader,如下所示: import合并类ImageLoader {私人让urlSession:URLSession专用的让缓存:NSCache ..
发布时间:2021-04-23 19:14:06 移动开发