在获取 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 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 NSCoder 中展开可选值时意外发现 nil

在隐式展开可选值时意外发现 nil (UICollectionView)

URL 错误:在展开可选值时意外发现 nil:文件

如何防止致命错误:在展开可选值时意外发现 nil

fetchedResultsController 核心数据致命错误:在展开可选值时意外发现 nil

“致命错误:在展开可选值时意外发现 nil”,同时调用协议方法