在获取 PHAsset 路径时展开可选值时意外发现 nil [重复]
Posted
技术标签:
【中文标题】在获取 PHAsset 路径时展开可选值时意外发现 nil [重复]【英文标题】:Unexpectedly found nil while unwrapping an Optional value while fetching PHAsset Path [duplicate] 【发布时间】:2019-04-03 13:13:14 【问题描述】:由于在线代码中的 nil 值导致应用程序崩溃:
if let strURL = (contentEditingInput!.audiovisualAsset as? AVURLAsset)?.url.absoluteString
在展开可选值时意外发现 nil
func getUrlFromPHAsset(asset: PHAsset, callBack: @escaping (_ url: URL?) -> Void)
asset.requestContentEditingInput(with: PHContentEditingInputRequestOptions(), completionHandler: (contentEditingInput, dictInfo) in
if let strURL = (contentEditingInput!.audiovisualAsset as? AVURLAsset)?.url.absoluteString
print("VIDEO URL: \(strURL)")
callBack(URL.init(string: strURL))
)
【问题讨论】:
【参考方案1】:只是一个猜测,但这个隐式展开的可选选项是不安全的:contentEditingInput!
。那是零吗?将该行设置为:
if let strURL = (contentEditingInput?.audiovisualAsset as? AVURLAsset)?.url.absoluteString
否则,如果contentEditingInput
为nil,解包时会崩溃。
为了将来参考,请尝试提供有关崩溃发生的位置、相关代码以及显示的代码中使用的值的更多信息。
【讨论】:
是的,我将 contentEditingInput 设为 nil。我已经用过 if else 部分但仍然报错 我上面代码的区别是“?”在contentEditingInput
之后。如果该值为 nil,则评估将停止而不是崩溃。以上是关于在获取 PHAsset 路径时展开可选值时意外发现 nil [重复]的主要内容,如果未能解决你的问题,请参考以下文章
在隐式展开可选值时意外发现 nil (UICollectionView)