combine相关内容
我正在使用 Swift Combine 并且想要制作一个从 Publisher 数组创建的 Publisher.每次数组中的一个发布者发出一个新元素时,它都应该发出一个元素数组. 在 RxSwift 中将如下所示: let obs1 = PublishSubject()让 obs2 = PublishSubject()让 arrayObs = [obs1, obs2)]Observabl
..
我对 Swift 非常陌生,我目前正在尝试通过使用 SwiftUI + Combine 构建一个分租应用程序来学习.我想遵循 MVVM 模式并试图实现这一点.目前我有以下模型、视图模型和视图文件: 型号: 导入基础进口结合结构体输入金额{var myMonthlyIncome : 双倍var housemateMonthlyIncome : 双倍var totalRent : 双倍} V
..
我正在尝试为Combine创建一个 LocationManager 包装器.我有一个发布者和一些触发发布者的功能.但是,我想将它们与自定义命令结合在一起. 这是我到目前为止所得到的: @available(OSX 10.15,iOS 13,tvOS 13,watchOS 6,*)公共类LocationProxy:NSObject {私人懒惰的var管理器= CLLocationManag
..
调用以下fetchURL函数的正确语法是什么? func fetchURL(_ url:URL)->AnyPublisher{URLSession.shared.dataTaskPublisher(用于:url).map(\.data).decode(类型:T.self,解码器:JSONDecoder()).eraseToAnyPublisher()}
..
我有一个视图类,在选择器中显示了来自ViewModel类的项目列表.该选择器的初始状态是viewModel类的对象数组中的第一个元素. 从选择器中选择项目时,我想在该视图中执行不同的操作-1.单击按钮时,将对象信息发送到不同的屏幕.2.显示有关从选择器中选择的对象的信息. 导入SwiftUI进口联合收割机struct SetConfiguration:查看{@ObservedObject
..
我已经在我的应用程序中成功使用 BrightFutures ,主要用于异步网络请求.我决定现在该看看是否可以迁移到合并.但是,我发现的是,当我使用未来代码块执行两次.以下是一些示例代码,这些代码将直接在操场上运行: import合并进口基金会扩展发布商{func showActivityIndicatorWhileWaiting(message:String)->AnyCancellabl
..
我有一个 ObservableObject ,当服务器发送新数据时,我将使用它来更新我的UI(一个包含自定义结构数组的类). 由于某种原因,在发送数据时,将调用 ContentView 的 body ,但数据不会更改.我什至添加了 print 语句来检查数组包含的数据是否正确. 当我尝试切换到 TabView 上的另一个选项卡,然后再切换回主视图时,UI 确实得到更新.有人知道为什么我
..
因此,我有此API调用序列,在这里我获取了一个员工详细信息,然后获取了与该员工相关联的公司和项目详细信息.两次提取均完成后,我将两者合并并发布了一个fetchCompleted事件.我在下面隔离了相关代码. func getUserDetails()->AnyPublisherfunc getCompanyDetails(user:UserDetails)->
..
我的测试台看起来像这样: var存储=设置()覆盖func viewDidLoad(){let pub = Timer.publish(每个:0.2,on:.main,in:.common).autoconnect().scan(0){i,_ in i + 1}.buffer(大小:4,预取:.keepFull,whenFull:.dropNewest).fl
..
我有以下模型: struct响应:可解码{让消息:字符串}struct ErrorResponse:可解码{让errorMessage:字符串}枚举APIError:错误{案例网络(代码:整数,描述:字符串)大小写解码(描述:字符串)大小写api(描述:字符串)} 我正在尝试使用以下流程获取网址并解析JSON响应: func fetch(URL:URL)->AnyPublisher
..
我可以看到定义了 NSObject.KeyValueObservingPublisher 的Foundation标头.但是我找不到定义返回此发布者的 publish(for:)方法的标头.而且我在文档中找不到它. 它必须包含NSObject,因为用KVO只能观察到NSObject.它必须以 publisher(for:)和 publisher(for:options:)形式出现,因为这就是X
..
我正在使用Xcode 11 Beta 5(11M382q),并将iphone x与iOS 13 beta 6结合使用,尝试使用Combine时遇到此运行时错误: 模型:未找到符号:_ $ s7Combine9PublishedV9PublisherCyx_GAadAMc 我有一个Core类,它是一个 ObservableObject 导入SwiftUI进口联合收割机开放课程核心:Ob
..
我有一个需要检查服务器状态的应用程序: 每30秒 每当应用进入前台时 我这样做是通过合并两个发布者,然后调用合并的发布者的输出 flatMap 来触发API请求. 我有一个发出API请求并返回结果发布者的函数,还包括检查响应并根据其内容引发错误的逻辑. 似乎一旦抛出 StatusError.statusUnavailable 错误, statusSubject 就会停止获
..
我正在尝试解决我想捕获该错误的401错误情况,请检查错误是否为401,以及是否为- 刷新oAuth 再次执行相同的API. 当前,我正在执行以下操作- 返回urlSession.dataTaskPublisher(用于:请求).tryMap(checkForAPIError).tryCatch {(错误)->AnyPublisher
..
我刚刚将Xcode从11.3更新为11.4,用SwiftUI编写的项目的行为开始有所不同.我曾经为布尔值调用 toggle()函数,它曾经触发过 didSet 属性观察器,但是,它不再起作用了. 假设我们有一个名为 isSettingOn 的 State 属性.我曾经这样称呼过: isSettingOn.toggle() 正在触发该属性的 didSet 观察者.现在,只有当我打电
..
在下面的代码中,它是更为复杂的管道的简化版本,其中“完成处理"从来没有要求2. 那是为什么? 我怀疑这是由于需求引起的问题,但我无法找出原因. 请注意,如果我删除 combineLatest()或 compactMap(),则正确处理了值2(但是我需要这些 combineLatest 和 compactMap 的正确性,在我的真实示例中,它们涉及更多). var cancel
..
我的视图模型中有两个发布状态,一个用于 source ,另一个用于 destination 基于解决方案此处,以检测文本字段上的实时更改.我已经实现了 TextField(“",文本:$ viewModel.source)TextField(“",文本:$ viewModel.destination) 问题,这是每当用户输入一些值时我都需要更新这两个字段.例如-如果用户在 sourc
..
我正在尝试根据我的AuthenticationState类(使用Firebase Auth)中登录的用户实例化用户配置文件.该用户个人资料是我的UserProfileViewModel的一部分,该用户个人资料应该会提供一个视图来编辑用户的个人资料. 但是,当实例化UserProfileViewModel时,loginInUser似乎仍然显示为nil,并且我不确定是否有办法使用这样的另一个类的
..
我有一个发布者包装结构,可以处理响应状态代码.如果状态码不在200..300范围内,则返回一个对象,否则抛出错误.效果很好. 公共功能anyPublisher(类型:T.Type)->AnyPublisher{返回URLSession.shared.dataTaskPublisher(for:urlRequest).tryMap {输出为警卫让httpR
..
以下管道: 枚举MyError:错误{案件哎呀}让cancel = Fail(错误:MyError.oops).print("1>").print("2>").sink(receiveCompletion:{状态为print("status>",状态)}){价值print("value>",value)} 输出: 1> ;:接收订阅:(空)2> ;:接收订
..