在这段代码中,我try 将[RegisteredMediaAttachment]映射到[BasicAttachmentInput],但只针对那些具有可解析uploadUrl的项.

    private func createSecondaryAttachments(
        _ attachments: [RegisteredMediaAttachment]
    ) -> [BasicAttachmentInput] {
        return attachments.compactMap {
            guard let name = URL(string: $0.registration.uploadUrl) else {
                return nil
            }

            return BasicAttachmentInput(
                name: name,
                contentType: $0.attachment.type.mime(),
                sizeBytes: $0.attachment.data.count,
                mediaId: $0.registration.media.id
            )
        }
    }

然而,Swift 在return nil线上抱怨说,'nil' is not compatible with closure result type 'BasicAttachmentInput'

这让我很惊讶.我希望该函数编译并减少映射结果,使其仅包含从compactMap闭包返回的非nil值.上面的代码片段有什么问题?

推荐答案

变化

return nil

return nil as BasicAttachmentInput? 

Swift相关问答推荐

变量捕获:变量在函数闭包中的行为

如何在realityKit中反转USDZ动画

我可以在预览中通过拖动手势跳转,但在模拟器中失败

将NavigationSplitView更改为NavigationStack

Swift通过设置变量B自动设置变量A的值

如何将多个完成处理程序转换为异步?

UIView.convert(_ point:to:)的意外行为

SwiftUI 交易:根据外部状态制作一个动画或静止的按钮

If 语句在 Swift 中有 2 个日期

确定路径是否相交的有效方法

ForEach within List:模式的好处?

使用 WrappingHStack 文本溢出到新行

如何在 Swift 中使用子定义覆盖父类扩展

.onTapGesture 不适用于 Stepper,仅适用于其文本

获取 SwiftUI 中 Binding 的值更改更新

Swift 2 或 3 中的 Google Analytics 问题

如何快速截取 UIView 的屏幕截图?

Swift :如何在一组字符之后得到所有东西

在 Swift 中覆盖 UIScrollView 的委托属性(就像 UICollectionView 一样)

如何将应用程序与 iOS 联系人应用程序集成?