DGElasticPullToRefresh - Команда не выполнена из-за сигнала: Ошибка сегментации: 11 - PullRequest
0 голосов
/ 28 мая 2018

После импорта DGElasticPullToRefresh Lib через Pods мой компилятор падает.Это вызвано этой функцией 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

Кто-нибудь знает, как это исправить?Спасибо.

1 Ответ

0 голосов
/ 28 мая 2018

Я мог бы это исправить после 2 часов тестирования: мне пришлось выбирать тип передачи NSValue:

От этого:

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

до этого:

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