【问题标题】:Cast NSValue to CMTimeRange type swift 5.3将 NSValue 转换为 CMTimeRange 类型 swift 5.3
【发布时间】:2020-09-18 09:00:06
【问题描述】:

Swift 5.0 通常将 NSValue 转换为 CMTimeRange 类型,它在 swift 5.3 中不支持? 例如,这在 Xcode 11.7 (Swift 5.0) 中可以正常工作

let nsValue = NSValue(timeRange: CMTimeRange(start: CMTime(seconds: 12, preferredTimescale: 1), duration: CMTime(seconds: 22, preferredTimescale: 1)))
let value = nsValue as? CMTimeRange

但在 Xcode 12 (Swift 5&) 中失败并显示警告:

Cast from 'NSValue' to unrelated type 'CMTimeRange' always fails

【问题讨论】:

    标签: swift5 nsvalue


    【解决方案1】:

    NSValue 具有 timeRangeValue,它返回 CMTimeRange 而无需显式强制转换。

    【讨论】:

    • 是的,但它可能会返回空结构。通用类型可以转换为它的真实类型,而无需访问属性。我的问题是为什么它错过了这个属性?
    【解决方案2】:

    dharmon 是正确的:

    iOS13: 让 value = nsValue as? CMTimeRange

    iOS14:让值 = nsValue.timeRangeValue

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多