将两个不同类型的数组排序为一个

Cod*_*ess 2 arrays sorting object ios swift

我有两个数组,它们是两个不同的对象,并且都包含一个ID字段。我需要做的是在表视图控制器中按顺序显示它们。它们共享相同的基本信息,大小和ID,除了显示的对象类型外,这些都是唯一显示的数据。当用户选择一个单元格时,它将移动到一个新视图,该视图显示该对象的详细信息。

现在,表中有两个部分,一个部分用于TypeA,另一部分用于TypeB。他们对各自列表中的所有项目进行排序,但在制造项目时却无序。所以看起来像:

TypeA
  ID 1
  ID 2
  ID 5
  ID 6
TypeB
  ID 3
  ID 4
  ID 7
Run Code Online (Sandbox Code Playgroud)

我需要的是将它们全部分类为1部分,并在选择时仍打开详细视图。

思想

我可以将它们全部放入AnyObject词典中,然后在查看单个项目时确定它们是否属于一种对象类型或另一种。我觉得这样行得通,但是如何正确排序呢?

Cod*_*ent 5

将所有通用属性放入协议,构建并排序该通用协议的数组:

protocol HasID {
    var id: Int { get }
}

class TypeA : HasID, CustomStringConvertible {
    var id: Int

    init(_ id: Int) {
        self.id = id
    }

    var description : String {
        return ("TypeA(\(self.id))")
    }
}

class TypeB : HasID, CustomStringConvertible {
    var id: Int

    init(_ id: Int) {
        self.id = id
    }

    var description : String {
        return ("TypeB(\(self.id))")
    }
}

let typeA = [TypeA(1), TypeA(2), TypeA(5), TypeA(6)]
let typeB = [TypeB(3), TypeB(4), TypeB(7)]
let result: [HasID] = (typeA + typeB).sorted { $0.id < $1.id }

print(result)
Run Code Online (Sandbox Code Playgroud)
[TypeA(1), TypeA(2), TypeB(3), TypeB(4), TypeA(5), TypeA(6), TypeB(7)] 
Run Code Online (Sandbox Code Playgroud)