如何修复`类型的值'[收据信息]'(又名......)没有成员'compactMap'`?

Kar*_*rdo 8 swift

我正在开发一个基于Swift3的项目,然后升级到Swift 4.通过切换Toolchain > Swift Development SnapshotXCode 9.2,XCode显示3个与以下相关的错误compactMap:

错误:类型'[ReceiptInfo]'(又名'Array>')的值没有成员'compactMap'

let receiptItems = nonCancelledReceiptsInfo.compactMap { ReceiptItem(receiptInfo: $0) }

return receiptItems.compactMap {
    if let expirationDate = $0.subscriptionExpirationDate {
       return (expirationDate, $0)
    }
       return nil
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,我对XCode和Swift了解不多.我需要等效的Swift 4代码.我感谢任何帮助.

Ash*_*ish 3

正如哈米什所说,这是正确的。CompactMap( :) 是在 Swift 4.1 中引入的,在 Swift 4.0.x 中检查这里,它的 flatMap( :) 检查这里,但现在已弃用。

let receiptItems = nonCancelledReceiptsInfo.flatMap { ReceiptItem(receiptInfo: $0) }

return receiptItems.flatMap {
if let expirationDate = $0.subscriptionExpirationDate {
   return (expirationDate, $0)
}
   return nil
}
Run Code Online (Sandbox Code Playgroud)