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
相关产品推荐
相关产品推荐

