You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift中AVAsset naturalSize报错:表达式类型模糊需类型注解

解决Swift中AVAsset获取尺寸的编译错误

错误原因

  • naturalSize是AVAsset的属性,不是方法,不需要加括号调用,你写的naturalSize()是错误写法。
  • asset是可选类型,通过可选链asset?.naturalSize.width得到的结果是CGFloat?(可选浮点型),直接赋值给非可选的CGFloat变量时,Swift无法处理可能的nil值,因此提示类型歧义。

正确写法

方式1:可选绑定(推荐,安全处理nil)

先确认asset不为nil,再获取尺寸:

if let asset = asset {
    let vidWidth = asset.naturalSize.width
    let vidHeight = asset.naturalSize.height
    // 在此处使用获取到的尺寸
}

方式2:空合运算符(给nil情况设置默认值)

如果希望asset为nil时尺寸取默认值(比如0),可以用空合运算符:

let vidWidth: CGFloat = asset?.naturalSize.width ?? 0
let vidHeight: CGFloat = asset?.naturalSize.height ?? 0

方式3:强制解包(仅当确定asset绝对不为nil时使用)

如果能保证asset一定有值,可强制解包,但存在崩溃风险:

let vidWidth = asset!.naturalSize.width
let vidHeight = asset!.naturalSize.height

内容的提问来源于stack exchange,提问作者TheGreatCornholio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 04:07:32