Swift NSSet没有下标成员

Swift NSSet没有下标成员,swift,uitableview,nsset,Swift,Uitableview,Nsset,我有一个CoreData对象,它的关系是NSSet。我试图将其用作我的数据源,但得到以下结果 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = playerTableView.dequeueReusableCellWithIdentifier("Cell")! as UITableViewC

我有一个CoreData对象,它的关系是
NSSet
。我试图将其用作我的数据源,但得到以下结果

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let cell = playerTableView.dequeueReusableCellWithIdentifier("Cell")! as UITableViewCell
    cell.textLabel?.text = self.game.players[indexPath.row]
    return cell
}
如何在tableView中使用我的NSSet?我相信每次使用NSSet都是无序的,因此可能会有所不同,因此我如何订购此NSSet?

我就是这样做的:

for player in game.players! {
        orderedPlayers.append(player as! Player)
    }
    orderedPlayers.sortInPlace({ $0.name < $1.name })
适用于游戏中的玩家。玩家!{
OrderedPlayer.append(玩家身份!玩家)
}
OrderedPlayer.sortInPlace({$0.name<$1.name})

您可以使用
allObjects
从集合中获取数组,然后对对象进行排序

let orderedPlayers = (game.players!.allObjects as! [Player]).sort { $0.name < $1.name }

您可以向
game
核心数据类添加下标,如下所示:

subscript(index: Int) -> Player? {
    let descriptor = NSSortDescriptor(key: "name", ascending: true)
    let orderedPlayerArray = players?.sortedArray(using: [descriptor])
    let playerWhereIndex = orderedPlayerArray?[index]
    return playerWhereIndex as? Player
}

如果要对集合进行排序,则应将元素加载到数组中。@TimVermeulen是的,我已经开始研究这个,它是我列表中的第二个。我想我可以按名称将CoreData对象排序到一个数组中?例如,是的。
subscript(index: Int) -> Player? {
    let descriptor = NSSortDescriptor(key: "name", ascending: true)
    let orderedPlayerArray = players?.sortedArray(using: [descriptor])
    let playerWhereIndex = orderedPlayerArray?[index]
    return playerWhereIndex as? Player
}