combine相关内容
在我的SwiftUI应用中,每次值更改时,我都需要从ObservedObject获取数据.我知道我们可以使用.onReceive来做到这一点?我不太了解Apple的相关文档.我不知道该怎么办. 我的代码: 导入SwiftUI导入CoreLocationstruct Compass:查看{@StateObject var location = LocationManager()@State私
..
使用SwiftUI(Xcode 11.1),我已经设置了一些使用2向绑定的视图(使用 @Binding ).双向更新效果很好. 但是,如何从PreviewProvider实例化视图? 例如: struct AddProjectView:视图{@Binding public var showModal:布尔var body:some View {返回VStack {文字(“添加项目视
..
我有一个简单的主/明细接口,其中明细视图修改了数组中的项目.使用以下内容,可以正确更新模型,但是SwiftUI不会刷新视图以反映更改. 型号: struct ProduceItem:可识别的{设id = UUID()命名:字符串var库存:Int}最终课程ItemStore:BindableObject {var willChange = PassthroughSubject
..
我正在尝试保存用户的Checkin时间首选项(向他们发送通知提醒).到目前为止,我已经能够将Bool和字符串保存到UserDefaults中,但是我无法弄清楚如何保存 time 首选项.这是我的UserSettings类,用于存储首选项. 公共类UserSettings:ObservableObject {@发表的var晚报:Bool {didSet {UserDefaults.standard
..
我正在将我的项目从RxSwift移至Combine我有一个逻辑,我希望发布者每次单击按钮都可以发出事件.正确单击按钮即可执行 pushMe.send() pushMe.print(“调试").flatMap {(res)->AnyPublisher在返回Future .init {闭包(.failure(Errors.validationFail))}
..
我正在使用 onChange 修饰符在视图上观察属性.但是,我也希望同一段代码也可以在初始值上运行,因为有时数据会注入到初始化程序中,或者稍后异步加载. 例如,我有一个注入模型的视图.有时,此模型中包含数据以开始(例如预览),或者从网络中异步检索. class MyModel:ObservableObject {@已发布的var计数器= 0}struct ContentView:查看{@
..
说明: 我有一个具有以下层次结构的模型: 食谱 ... steps(数组) ... currentStep ...... 参数(数组) .........最低 .........最大 .........默认值 ......... 当前 该模型运行良好.我可以添加步骤,参数,并将当前步骤设置为名为 recipe 的 @EnvironmentObject . 我已
..
我不太了解如何正确地将订阅者存储在类中,以使它们持久化,但又不阻止对象被初始化.这是一个对象不会取消初始化的示例: 导入UIKit进口联合收割机班级考试{公共变量名称:字符串=“"私人var disposeBag:Set= Set()取消初始化{print("deinit")}init(发布者:CurrentValueSubject){P
..
我创建了一个自定义文本字段,我想利用Combine.为了在文本字段中的文本更改时得到通知,我目前使用自定义修饰符.它运行良好,但我希望此代码可以在CustomTextField结构中使用. 我的CustomTextField结构符合UIViewRepresentable.在此结构内部,有一个名为Coordinator的NSObject类,它符合UITextFieldDelegate.
..
基本上,我试图弄清楚何时更新viewModel,它将通知视图并刷新整个正文.如何避免这种情况.例如,如果我的视图GoLiveView已经存在另一个视图BroadcasterView,并且后来更新了我的goLiveViewModel,则GoLiveView将被刷新,并且它将再次创建BroadcasterView,因为showBroadcasterView = true.因此,它将导致很多问题.
..
使用遵循当前SwiftUI语法的@Published属性包装器时,很难定义一个包含带有@Published属性的协议,否则我肯定需要帮助:) 当我在View及其ViewModel之间实现依赖项注入时,我需要定义一个ViewModelProtocol以便注入模拟数据以方便预览. 这是我第一次尝试, 协议PersonViewModelProtocol {@发表的var person:Pe
..
我试图制作一个 ObservableObject ,它具有包装 UserDefaults 变量的属性. 为了符合 ObservableObject ,我需要使用 @Published 包裹属性.不幸的是,我无法将其应用于计算的属性,因为我将其用于 UserDefaults 值. 我如何使它工作?我该怎么做才能实现 @Published 行为? 解决方案 已更新:使用Enclos
..
尝试发出网络请求时,出现错误 完成,但错误[-999]错误域= NSURLErrorDomain代码= -999“已取消" 如果我使用 URLSession.shared.dataTask 而不是 URLSession.shared.dataTaskPublisher ,它将在IOS 13.3上运行. 这是我的代码: 返回URLSession.shared.dataTaskPubli
..
在RxSwift中,将View Model中的Driver或Observable绑定到ViewController(即UILabel)中的某些观察者非常容易. 我通常更喜欢建立一个由其他可观察对象创建的可观察对象的管道,而不是“强制"推送值(例如通过PublishSubject). 让我们使用这个示例:从网络中获取一些数据后,更新UILabel RxSwift + RxCocoa
..
在命令式Swift中,通常使用计算属性在不复制状态的情况下提供对数据的方便访问. 比方说,我将此类用于命令式MVC: class ImperativeUserManager { private(set) var currentUser: User? { didSet { if oldValue != currentUser {
..
我在另一个类中嵌套了两个类,这是SwiftUI视图中的一个可观察对象.即使嵌套类中的属性声明为@Published,但它们的值(当它们更改时)不会在主视图中更新. 这里提出了一个类似的问题,我可以用它来使它适用于两个子类之一,但不能同时适用于这两个子类. 如何告诉SwiftUI视图绑定到嵌套ObservableObjects 这是模型: class Submodel1: O
..
我正在尝试使用以下内容运行一个简单的项目: @Published var currentPlacemark: CLPlacemark? = nil XCode11 Beta5(11M382q) iOS13(17A5556d) 出现以下错误: dyld: Symbol not found: _$s7Combine9PublishedV9PublisherCyx_GAadAM
..
我在SwiftUI和Combine中的内存管理遇到了麻烦. 例如,如果我有一个NavigationView,然后导航到带有TextField的详细信息视图,然后在TextField中输入一个值,然后单击“后退"按钮,则下次我转到该视图时,TextField具有先前输入的值 我注意到在取消了详细视图后,视图模型仍在内存中,这可能就是TextField仍然保留值的原因. 在UIKit
..
我想在滚动时隐藏我的NavigationBar,实际上它必须自动隐藏,但是当我尝试使用多个视图时它不起作用.另外,当我删除自定义视图并用NavigationView封装List时,它也可以工作.但是我需要SearchBar和StatusView视图.有什么建议吗? 顺便说一下,我在设备上运行它,在这里我使用canvas进行演示. 谢谢. var body: some View {
..
如果我将可取消集存储到ViewController中: private var bag = Set() 其中包含多个订阅. 1-我应该在deinit中取消订阅吗?还是自动完成工作? 2-如果是,我如何取消所有存储的订阅? bag.removeAll() is enough? 还是我应该遍历该集合并逐个取消所有订阅? for su
..