NSSet没有下标成员



我有一个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我相信这是无序的所以每次都可能不同,我该如何排序这个集合呢?

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

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

如果你声明为本地Swift类型Set<Player> - CoreData也支持Swift类型-你甚至可以省略类型转换和allObjects:

let orderedPlayers = game.players!.sort { $0.name < $1.name }

我是这样做的:

for player in game.players! {
        orderedPlayers.append(player as! Player)
    }
    orderedPlayers.sortInPlace({ $0.name < $1.name })

您可以像这样为game core data类添加下标:

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
}

最新更新