Swift NSSet没有下标成员
我有一个CoreData对象,它的关系是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
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
}