我有一个像这样的数组:
var gestureArray: Array<UIGestureRecognizer>!
我试图像这样添加项目到这个数组:
for gesture in webview.scrollView.gestureRecognizers!
{
gestureArray.insert(gesture, atIndex: 0)
}
print(gestureArray)
但尝试添加第一项后我收到此错误:
unexpectedly found nil while unwrapping an Optional value
当我打印每个手势时,它们看起来像这样:
<UIScrollViewDelayedTouchesBeganGestureRecognizer: 0x124eabb60; state = Possible; delaysTouchesBegan = YES; view = <_UIWebViewScrollView 0x125825400>; target= <(action=delayed:, target=<_UIWebViewScrollView 0x125825400>)>>
<UIScrollViewPanGestureRecognizer: 0x124eac370; state = Possible; delaysTouchesEnded = NO; view = <_UIWebViewScrollView 0x125825400>; target= <(action=handlePan:, target=<_UIWebViewScrollView 0x125825400>)>>
<UIScrollViewPinchGestureRecognizer: 0x124d892a0; state = Possible; delaysTouchesEnded = NO; view = <_UIWebViewScrollView 0x125825400>; target= <(action=handlePinch:, target=<_UIWebViewScrollView 0x125825400>)>>
答案 0 :(得分:3)
这意味着数组尚未初始化为非零值。
当你在一个类型后面加上感叹号!
时,你会告诉Swift两件事:
gestureArray
的值nil
和gestureArray
分配一个非零值。作为回报,Swift允许您访问gestureArray
,就像它不是可选的一样(即使用gestureArray.insert(...)
代替gestureArray!.insert(...)
)
从您收到的例外情况来看,gestureArray
在您呼叫nil
时仍然是insert
。
答案 1 :(得分:2)
您的gestureArray
值为零。您可以这样创建变量:
var gestureArray = [UIGestureRecognizer]()
您正在创建变量并设置其类型,但从未分配其值。还有另一个错误,您无法创建类属性并将其设置为unwrapped optional
。您应该始终或创建变量并为其赋值,或将其类型设置为optional
。例如:var gestureArray: [UIGestureRecognizer]?