Swift 结合添加运算符方法,如何使返回值简单、简短,如 Publishers.FlatMap.XX> 到 AnyPublisher

2024-03-25

当我添加一些运算符时,返回值会更长,例如:

Publishers.FlatMap ,令牌>,AnyPublisher >

其实我希望用户只需要知道AnyPublisher足够。

有什么办法让我只能返回AnyPublisher而不是Publishers.FlatMap ,令牌>,AnyPublisher >

public func singleHTTPLoginSignal(ccCode:String, phone: String, authType:String,password: String) ->  AnyPublisher<NetResponse<OauthToken>, Error>{
    return API.shared.combine_loadModelResource(GetOauthTokenAPI(ccCode: ccCode, phone: phone, authType: authType,password: password), type: OauthToken.self)

}

///Map:NetResponse<MQTTToken> -> Token
public func singleMQTTLoginSignal(oauthToken: OauthToken) ->
    Publishers.Map<AnyPublisher<NetResponse<MQTTToken>, Error>, Token>{
        
    API.shared.combine_loadModelResource(GetMQTTTokenAPI(accessToken: oauthToken.access_token), type: MQTTToken.self).map({ response in
        return Token(oauthToken: oauthToken, mqttToken: response.data!)
    })
}


///AnyPublisher<Token, Error>
public func loginFullSignal(ccCode:String, phone: String, authType:String,password: String) -> Publishers.FlatMap<Publishers.Map<AnyPublisher<NetResponse<MQTTToken>, Error>, Token>, AnyPublisher<NetResponse<OauthToken>, Error>>
{
    self.singleHTTPLoginSignal(ccCode:ccCode,phone:phone,authType:authType,password:password).flatMap{ response  in
        return self.singleMQTTLoginSignal(oauthToken: response.data!)
    }
}


我们正在为您的案例使用 .eraseToAnyPublisher() 。

苹果文档 https://developer.apple.com/documentation/combine/just/erasetoanypublisher()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Swift 结合添加运算符方法,如何使返回值简单、简短,如 Publishers.FlatMap.XX> 到 AnyPublisher 的相关文章

  • SpriteKit - 对多个 SKNode 上运行的多个 SKAction 进行排序

    我非常了解 SKAction API 但在多个节点上运行顺序代码时我无法获得良好的代码 这是示例代码 简化 import SpriteKit class GameScene SKScene weak var node1 SKNode wea
  • SwiftUI 检测用户何时截取屏幕截图或屏幕录制

    On UIViewController我们可以轻松地将观察者添加到控制器 喜欢 class ViewController UIViewController override func viewDidLoad super viewDidLoa
  • 如何在 Swift 中使用 deltaTime 正确计算 1 秒

    我正在尝试计算经过的秒数deltaTime但我不知道该怎么做 因为我的deltaTime不断打印 0 0166 或 0 0167 这是我的代码 override func update currentTime CFTimeInterval
  • UINavigationBar 滑开而不是留在原处

    我创建了演示项目来展示问题 我们在 UINavigationController 中有两个视图控制器 MainViewController这是根 class MainViewController UIViewController lazy
  • UNTimeIntervalNotificationTrigger nextTriggerDate() 是否给出了错误的日期?

    我正在更新本地通知以与 iOS 10 配合使用 但遇到了一个问题 我认为 nextTrigger 函数返回的不是 满足触发条件的下一个日期 而是返回当前日期时间加上您最初设置 UNTimeInvervalNotificationTrigge
  • Swift UIImage 转换为 PDF

    在我的应用程序中 必须从 iPad Gallery 出售 UIImage 并将其转换为 PDF 并保存在服务器端 我可以选择图像并将其发送到服务器端 但后端说 pdf 为空 空数据 我还在控制台中看到警告 错误 发现扩展时遇到 发现 错误
  • 删除 Swift 中字符串开头的所有换行符

    我有一个像这样的字符串 BLA Blub 现在我想删除所有前导换行符 但仅限于第一个 真实单词 出现之前的那些 这怎么可能 Thanks 如果可以接受从中删除换行符 和其他空白 字符两端然后你可以使用字符串 let string n nBL
  • 如何在 ios 应用程序中将 .svg url 显示为图像

    我从服务器获取 svg 网址 如何在我的应用程序中将其显示为图像 我尝试在 UIWebView 中显示它 但无法调整内容图像的大小 我正在使用这个代码 let request NSURLRequest NSURLRequest url UR
  • 快速不平衡调用开始/结束外观转换

    这已经困扰我一段时间了 我有一个UISplitViewController里面一个UITabBarController 主视图是一个TableView 当我单击一个单元格时 我会弹出一个非常基本的视图控制器 其中只有一个UIButton居中
  • 在 Swift 3 中通过 Core Graphics 绘制文本

    背景 我正在使用 Core Graphics 的 UIImageView 上绘图 我想最终在核心图形绘图上绘制一个文本字符串 这个 hackingwithswift com https www hackingwithswift com ex
  • 适用于 iOS 的 Firebase 云消息通知未显示打开和分析

    我正在使用 FCM 向 iOS 应用程序发送通知 设备上可以很好地接收通知 但我无法在通知控制台 GUI 中获取 打开 或 转化 率 对于发送的近 200 0000 条通知 它始终显示 0 个打开 和 0 个转化 我仔细检查了所有的实现 但
  • 迦太基依赖项禁用位码

    Scenario 我的项目 为 iOS watchOS tvOS 共享的代码库 具有以下构建设置ENABLE BITCODE YES并利用尚不支持位码的基本库 尽管引用了 Apple 文档应用程序细化 https developer app
  • 快速 Firebase 在异步任务中返回

    我在 swift 2 中遇到了适用于 iOS 的 Firebase SDK 的问题 我正在尝试将图片设置为从 Firebase 存储下载 当我调用该函数时 它返回 nil 我认为这是因为 Firebase sdk 提供的下载任务是异步的 因
  • 快速在视图之间传递数据

    我试图熟悉 Swift 但找不到如何使用 Swift 在视图之间传递数据 class ViewController UIViewController IBOutlet var field UITextField IBOutlet var b
  • userDidAcceptCloudKitShareWith 未被调用

    func application application UIApplication userDidAcceptCloudKitShareWith cloudKitShareMetadata CKShare Metadata 单击共享 cl
  • 检查 NSIndexPath 的行和部分的开关

    我想设置一个 switch 语句来检查值 ifNSIndexPath NSIndexPath是一个类 它由 除其他外 部分和行组成 indexPath row indexPath section 这就是我如何制定 if 语句来同时检查行和部
  • SwiftUI - 使用“ObservableObject”和@EnvironmentObject 有条件地显示视图

    我想在我的应用程序中有条件地显示不同的视图 如果某个布尔值为 true 则将显示一个视图 如果为 false 将显示不同的视图 该布尔值位于 ObservableObject 类中 并根据将要显示的视图之一进行更改 PracticeStat
  • 获取 PHAsset 的本地文件路径

    我希望我的用户能够在 Instagram 上分享一张照片 并且我需要获取该照片的本地文件目录 不过 我将图像作为 PHAsset 获取 而不是 ALAsset 所有其他答案似乎都涵盖了这个主题 查看 PHAsset 文档 我没有看到 本地目
  • IOS - 委托与通知

    想听听您对以下架构的看法 在我的应用程序中 我有一个处理异步登录的静态类 LoginManager 登录阶段完成后 应用程序应该做出响应并转换到另一个状态 我有2条实施建议 使用委托 import Foundation protocol L
  • 无法将类型“X”的值转换为预期参数类型“X”

    Xcode 8 和 Swift 3 今天让我非常难过 请看一下并告诉我您是否遇到过类似的问题以及是否可以解决它 我一直在尝试不同的解决方案 其中 Cmd Shift K Cmd Shift Option K 删除派生数据 更改使用的结构 它

随机推荐