Ios Swift数组索引超出范围和零值
我有一个JSON get请求,在这里我检索关于四个用户的信息,然后加载四个视图以及他们的图片、名称等 我还有一个功能,用户可以点击这些视图并查看有关它们的更多信息 但是,我需要确保包含四个用户的数组(randomFour)包含他们正在选择的视图的实际信息,并且不是零 我试图通过计算数组的索引来实现这一点,但由于某种原因,它无法阻止数组通过,然后崩溃,因为值为零Ios Swift数组索引超出范围和零值,ios,arrays,swift,null,indexoutofrangeexception,Ios,Arrays,Swift,Null,Indexoutofrangeexception,我有一个JSON get请求,在这里我检索关于四个用户的信息,然后加载四个视图以及他们的图片、名称等 我还有一个功能,用户可以点击这些视图并查看有关它们的更多信息 但是,我需要确保包含四个用户的数组(randomFour)包含他们正在选择的视图的实际信息,并且不是零 我试图通过计算数组的索引来实现这一点,但由于某种原因,它无法阻止数组通过,然后崩溃,因为值为零 @objc func loadWriteView(sender: UITapGestureRecognizer) { if se
@objc func loadWriteView(sender: UITapGestureRecognizer) {
if sender.view == a_view || sender.view == a_pic && randomFour.count >= 1 {
setupCardWrite(user: randomFour[0])
} else if sender.view == b_view || sender.view == b_pic && randomFour.count >= 2 {
setupCardWrite(user: randomFour[1])
} else if sender.view == c_view || sender.view == c_pic && randomFour.count >= 3 {
setupCardWrite(user: randomFour[2])
} else if sender.view == d_view || sender.view == d_pic && randomFour.count >= 4 {
setupCardWrite(user: randomFour[3])
}
}
如您所见,我检查计数是否大于某个值,但有时仍会收到以下错误:
Thread 1: Fatal error: Index out of range
当我检查时,我看到:
randomFour = ([Compliments.User]) 0 values
如何确保用户已正确加载?请尝试在前两个条件周围使用括号
if (sender.view == a_view || sender.view == a_pic) && randomFour.count >= 1
好的,谢谢。我试试看。括号难道不应该没有效果吗?@LeviK如果没有括号,这个特殊的语句就被当作是您编写的
if sender.view==a_view | |(sender.view==a_pic&&randomFour.count>=1)
,这显然不是您想要的。每当你在一个表达式中混合了|
和&&
时,一定要用括号来避免歧义。明白了,非常感谢!通常需要几百次测试才能解决这个问题,所以如果再发生这种情况,我会让你知道。非常感谢您的时间和努力,我会将此标记为正确,除非它最终不起作用此帖子的答案显示了确保数组索引不超出范围的解决方案: