Arrays 致命错误:索引超出范围?但是是吗?
我有一个非常奇怪的数组,我不确定我遗漏了什么,我确定是非常简单的东西。这是我的代码,这段代码使用对象和变量数组循环一个结构,并试图找到category=1的对象,如果这是真的,它会将对象数组发送到另一个数组中。一切正常,直到我尝试将数组复制到排序数组中,代码中有更多注释。我试图在用户单击某个类别时对tableView进行排序,4个可能的类别是1,30,31,32(不要问为什么)Arrays 致命错误:索引超出范围?但是是吗?,arrays,swift,Arrays,Swift,我有一个非常奇怪的数组,我不确定我遗漏了什么,我确定是非常简单的东西。这是我的代码,这段代码使用对象和变量数组循环一个结构,并试图找到category=1的对象,如果这是真的,它会将对象数组发送到另一个数组中。一切正常,直到我尝试将数组复制到排序数组中,代码中有更多注释。我试图在用户单击某个类别时对tableView进行排序,4个可能的类别是1,30,31,32(不要问为什么) 在不深入研究代码结构以及如何以更“快速”的方式编写代码的情况下,我可以看出问题在于,这不是在Swift中附加到数组的好
在不深入研究代码结构以及如何以更“快速”的方式编写代码的情况下,我可以看出问题在于,这不是在Swift中附加到数组的好方法
let currentNoSortedCourses = sortedCourses.count
sortedCourses[currentNoSortedCourses] = courses[count]
这是访问一个超出范围并导致崩溃的索引。要在Swift中附加到数组,请使用append
方法
sortedCourses.append(courses[count])
当我在这里的时候,我可能会告诉你一个更好的方法(一行)来解决你的问题,可能是这样的
sortedCourses = courses.filter { $0.categories.contains(1) }
你真正的问题是什么?问题是什么?是的,如果你越界了,那就是越界了。你的一行代码工作起来很神奇,非常感谢,你让我的代码看起来很古老!哦,天哪,如果我知道我不需要通过这种逻辑来提前编写所有代码的话
sortedCourses.append(courses[count])
sortedCourses = courses.filter { $0.categories.contains(1) }