如何根据类中的元素按顺序填充表视图

时间:2017-05-05 15:12:05

标签: ios arrays swift struct tableview

我的数据和表视图单元格有以下结构和数组:

struct CellData
{
    var cell: Int! = 1
    var SegueIdentiier: String!
    var text: String!
    var image: UIImage!
}
struct Course {
    var isEmpty: Bool = true
    var Title: String = String()
    var FK: String = String()
    var Subject: String = String()
    var teacher_fk: String = String()
    var teacher_name: String = String()
    var grading_period: String = String()
    var room: String = String()
    var block_abbreviation: String = String()
    var block: Int = 0
    var parser: XMLParser!
}
var ArrayOfCellData = [CellData(), CellData(), CellData(), CellData(), CellData(), CellData(), CellData(), CellData()]
var Courses = [Course(), Course(), Course(), Course(), Course(), Course(), Course(), Course(), Course(), Course(), Course(), Course()]

当我解析XML文件时,“块”用给定的数字填充。我想按照这些块号的顺序填充我的表视图。 即如果Courses[0].block = 4 and Courses[3].block = 2 id喜欢以课程[3]的顺序填充我的表格视图,那么就是课程[0]。

我无法弄清楚如何为我的生活做到这一点。这是我第一次在Stackoverflow上发帖,所以请你好! :)

2 个答案:

答案 0 :(得分:2)

实现所需行为的一种方法是根据您所需的排序标准对课程列表进行排序。

Courses.sort {
    $0.block < $1.block
}

如果由于某些原因初始订单很重要,您也可以拥有列表的排序副本。

答案 1 :(得分:0)

编辑 - 另一个答案似乎比我的简单,我完全与那个哈哈一起去。虽然这里有一个查找文档并使用它告诉你的内容的例子!

您需要对数组进行排序。您的单元格的indexPath需要能够唯一地确定数组的索引,以便生成单元格,因此您希望在加载表格之前对数组进行排序。

您需要为此编写自定义排序功能,但这应该非常简单:https://developer.apple.com/reference/foundation/nsarray/1408213-sortedarray

你的排序应该是这样的:

func intSort(course1:Course, course2:Course, void *context) -> NSInteger
{
    int v1 = course1.block;
    int v2 = course2.block;
    if (v1 < v2)
        return NSOrderedAscending;
    else if (v1 > v2)
        return NSOrderedDescending;
    else
        return NSOrderedSame;
}

您可能需要将这些课程作为Any传递并将其转换为该课程中的课程,但这应该可以帮助您入门。