首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UISlider投掷NSRangeException

UISlider投掷NSRangeException
EN

Stack Overflow用户
提问于 2017-07-03 20:01:49
回答 1查看 23关注 0票数 0

尽管将每个滑块的最小值、最大值和当前值设置为情节提要中的默认值,但移动滑块会抛出一个错误,说明该值以某种方式移动到2。此外,此错误仅在我添加时才开始:

代码语言:javascript
复制
var lElbowX = Int()
var rElbowX = Int()
var lElbowY = Int()
var rElbowY = Int()
var lWristX = Int()
var lWristY = Int()
var rWristX = Int()
var rWristY = Int()
var lKneeX = Int()
var lKneeY = Int()
var rKneeX = Int()
var rKneeY = Int()
var lAnkleX = Int()
var lAnkleY = Int()
var rAnkleX = Int()
var rAnkleY = Int()

代码语言:javascript
复制
@IBAction func vertical(_ sender: Any) {//The action function used to be empty
    if jointPicker.selectedRow(inComponent: 2) == 1 {//left
        if jointPicker.selectedRow(inComponent: 1) == 1 {//lNeck
            //nothing yet
        }
        if jointPicker.selectedRow(inComponent: 1) == 2 {//lShoulder
            //nothing yet
        }
        if jointPicker.selectedRow(inComponent: 1) == 3 {//lElbow
            lElbowY = Int((verticalSlider.value - 0.5) * 200)
        }
        if jointPicker.selectedRow(inComponent: 1) == 4 {//lWrist
            lWristY = Int((verticalSlider.value - 0.5) * 200)
        }
        if jointPicker.selectedRow(inComponent: 1) == 5 {//lSpine
            //nothing yet
        }
        if jointPicker.selectedRow(inComponent: 1) == 6 {//lHip
            //nothing yet
        }
        if jointPicker.selectedRow(inComponent: 1) == 7 {//lKnee
            lKneeY = Int((verticalSlider.value - 0.5) * 200)
        }
        if jointPicker.selectedRow(inComponent: 1) == 8 {//lAnkle
            lAnkleY = Int((verticalSlider.value - 0.5) * 200)
        }

    }
    if jointPicker.selectedRow(inComponent: 2) == 2 {//right
        if jointPicker.selectedRow(inComponent: 1) == 1 {//rNeck
            //nothing yet
        }
        if jointPicker.selectedRow(inComponent: 1) == 2 {//rShoulder
            //nothing yet
        }
        if jointPicker.selectedRow(inComponent: 1) == 3 {//rElbow
            rElbowY = Int((verticalSlider.value - 0.5) * 200)
        }
        if jointPicker.selectedRow(inComponent: 1) == 4 {//rWrist
            rWristY = Int((verticalSlider.value - 0.5) * 200)
        }
        if jointPicker.selectedRow(inComponent: 1) == 5 {//rSpine
            //nothing yet
        }
        if jointPicker.selectedRow(inComponent: 1) == 6 {//rHip
            //nothing yet
        }
        if jointPicker.selectedRow(inComponent: 1) == 7 {//rKnee
            rKneeY = Int((verticalSlider.value - 0.5) * 200)
        }
        if jointPicker.selectedRow(inComponent: 1) == 8 {//rAnkle
            rAnkleY = Int((verticalSlider.value - 0.5) * 200)
        }

    }
}
@IBAction func horizontal(_ sender: Any) {//The action function used to be empty
    if jointPicker.selectedRow(inComponent: 2) == 1 {//left
        if jointPicker.selectedRow(inComponent: 1) == 1 {//lNeck
            //nothing yet
        }
        if jointPicker.selectedRow(inComponent: 1) == 2 {//lShoulder
            //nothing yet
        }
        if jointPicker.selectedRow(inComponent: 1) == 3 {//lElbow
            lElbowX = Int((horizontalSlider.value - 0.5) * 200)
        }
        if jointPicker.selectedRow(inComponent: 1) == 4 {//lWrist
            lWristX = Int((horizontalSlider.value - 0.5) * 200)
        }
        if jointPicker.selectedRow(inComponent: 1) == 5 {//lSpine
            //nothing yet
        }
        if jointPicker.selectedRow(inComponent: 1) == 6 {//lHip
            //nothing yet
        }
        if jointPicker.selectedRow(inComponent: 1) == 7 {//lKnee
            lKneeX = Int((horizontalSlider.value - 0.5) * 200)
        }
        if jointPicker.selectedRow(inComponent: 1) == 8 {//lAnkle
            lAnkleX = Int((horizontalSlider.value - 0.5) * 200)
        }

    }
    if jointPicker.selectedRow(inComponent: 2) == 2 {//right
        if jointPicker.selectedRow(inComponent: 1) == 1 {//rNeck
            //nothing yet
        }
        if jointPicker.selectedRow(inComponent: 1) == 2 {//rShoulder
            //nothing yet
        }
        if jointPicker.selectedRow(inComponent: 1) == 3 {//rElbow
            rElbowX = Int((horizontalSlider.value - 0.5) * 200)
        }
        if jointPicker.selectedRow(inComponent: 1) == 4 {//rWrist
            rWristX = Int((horizontalSlider.value - 0.5) * 200)
        }
        if jointPicker.selectedRow(inComponent: 1) == 5 {//rSpine
            //nothing yet
        }
        if jointPicker.selectedRow(inComponent: 1) == 6 {//rHip
            //nothing yet
        }
        if jointPicker.selectedRow(inComponent: 1) == 7 {//rKnee
            rKneeX = Int((horizontalSlider.value - 0.5) * 200)
        }
        if jointPicker.selectedRow(inComponent: 1) == 8 {//rAnkle
            rAnkleX = Int((horizontalSlider.value - 0.5) * 200)
        }

    }
}

呼叫堆栈:

代码语言:javascript
复制
2017-07-03 12:38:06.856 Exercise Generator[50942:2970421] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 2 beyond bounds [0 .. 1]'
*** First throw call stack:
(
0   CoreFoundation                      0x0000000110352d4b __exceptionPreprocess + 171
1   libobjc.A.dylib                     0x000000010d66521e objc_exception_throw + 48
2   CoreFoundation                      0x00000001102842eb -[__NSArrayM objectAtIndex:] + 203
3   UIKit                               0x000000010db187ba -[UIPickerView selectedRowInComponent:] + 76
4   Exercise Generator                  0x000000010d060734 _TFC18Exercise_Generator12selectorView8verticalfP_T_ + 180
5   Exercise Generator                  0x000000010d062713 _TToFC18Exercise_Generator12selectorView8verticalfP_T_ + 67
6   UIKit                               0x000000010db368bc -[UIApplication sendAction:to:from:forEvent:] + 83
7   UIKit                               0x000000010dcbcc38 -[UIControl sendAction:to:forEvent:] + 67
8   UIKit                               0x000000010dcbcf51 -[UIControl _sendActionsForEvents:withEvent:] + 444
9   UIKit                               0x000000010dda60d4 -[UISlider beginTrackingWithTouch:withEvent:] + 1132
10  UIKit                               0x000000010dcbb893 -[UIControl touchesBegan:withEvent:] + 179
11  UIKit                               0x000000010dba4285 -[UIWindow _sendTouchesForEvent:] + 2043
12  UIKit                               0x000000010dba5c33 -[UIWindow sendEvent:] + 4011
13  UIKit                               0x000000010db529ab -[UIApplication sendEvent:] + 371
14  UIKit                               0x000000010e33f72d __dispatchPreprocessedEventFromEventQueue + 3248
15  UIKit                               0x000000010e338463 __handleEventQueue + 4879
16  CoreFoundation                      0x00000001102f7761 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
17  CoreFoundation                      0x00000001102dc98c __CFRunLoopDoSources0 + 556
18  CoreFoundation                      0x00000001102dbe76 __CFRunLoopRun + 918
19  CoreFoundation                      0x00000001102db884 CFRunLoopRunSpecific + 420
20  GraphicsServices                    0x000000011228ca6f GSEventRunModal + 161
21  UIKit                               0x000000010db34c68 UIApplicationMain + 159
22  Exercise Generator                  0x000000010d0674ef main + 111
23  libdyld.dylib                       0x000000011130268d start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb) 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-03 20:13:07

查看堆栈跟踪的前几个帧。为了避免滚动,我将删除图像和地址列:

代码语言:javascript
复制
'*** -[__NSArrayM objectAtIndex:]: index 2 beyond bounds [0 .. 1]'
*** First throw call stack:
(
0   __exceptionPreprocess + 171
1   objc_exception_throw + 48
2   -[__NSArrayM objectAtIndex:] + 203
3   -[UIPickerView selectedRowInComponent:] + 76
4   _TFC18Exercise_Generator12selectorView8verticalfP_T_ + 180

我们看到,您的vertical(_:)方法询问组件中选定行的选择器视图,选择器视图试图从数组中获取对象。数组抛出异常,因为它被赋予索引2,但其有效索引仅为0和1。

选择器视图可能有一个组件数组,并且试图从数组中获取组件2,因为(在vertical(_:)中的两个不同位置)您询问它有关组件2。

我猜您的选择器视图只有两个组件,其中索引为0和1。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44893141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档