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

时间:2018-02-11 12:59:00

标签: swift

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

错误:类型的值' [收据信息]' (又名'数组>')没有会员' compactMap'

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

return receiptItems.compactMap {
    if let expirationDate = $0.subscriptionExpirationDate {
       return (expirationDate, $0)
    }
       return nil
}

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

1 个答案:

答案 0 :(得分:3)

正如Hamish所提到的,这是正确的。在Swift 4.0.x中的Swift 4.1 check here中引入了compactMap( :),其flatMap( :) check here已被弃用。

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

return receiptItems.flatMap {
if let expirationDate = $0.subscriptionExpirationDate {
   return (expirationDate, $0)
}
   return nil
}