DGElasticPullToRefresh - 由于信号,命令失败:分段错误:11



通过 Pods 导入 DGElasticPullToRefresh Lib 后,我的编译器崩溃了。它是由DGElasticPullToRefreshView的这个函数引起的.swift:

override open func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
if keyPath == DGElasticPullToRefreshConstants.KeyPaths.ContentOffset {
if let newContentOffset = change?[NSKeyValueChangeKey.newKey], let scrollView = scrollView() {
let newContentOffsetY = (newContentOffset as AnyObject).cgPointValue.y
if state.isAnyOf([.loading, .animatingToStopped]) && newContentOffsetY < -scrollView.contentInset.top {
scrollView.contentOffset.y = -scrollView.contentInset.top
} else {
scrollViewDidChangeContentOffset(dragging: scrollView.isDragging)
}
layoutSubviews()
}
} else if keyPath == DGElasticPullToRefreshConstants.KeyPaths.ContentInset {
if let newContentInset = change?[NSKeyValueChangeKey.newKey] {
let newContentInsetTop = (newContentInset as AnyObject).uiEdgeInsetsValue.top
originalContentInsetTop = newContentInsetTop
}
} else if keyPath == DGElasticPullToRefreshConstants.KeyPaths.Frame {
layoutSubviews()
} else if keyPath == DGElasticPullToRefreshConstants.KeyPaths.PanGestureRecognizerState {
if let gestureState = scrollView()?.panGestureRecognizer.state, gestureState.dg_isAnyOf([.ended, .cancelled, .failed]) {
scrollViewDidChangeContentOffset(dragging: false)
}
}
}

根据这篇文章:https://stackoverflow.com/a/41043678/6003494 我可以识别导致错误的行。这是第二个 if 子句中的这一行:

let newContentInsetTop = (newContentInset as AnyObject).uiEdgeInsetsValue.top

有人知道如何解决这个问题吗?谢谢。

我可以在 2 小时的测试后修复它: 我不得不有机会将类型转换为 NSValue:

由此:

let newContentInsetTop = (newContentInset as AnyObject).uiEdgeInsetsValue.top

对此:

let newContentInsetTop = (newContentInset as! NSValue).uiEdgeInsetsValue.top

最新更新