NSSet 没有下标成员
NSSet has no subscript members
我有一个 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,我相信这将是无序的,所以每次都可能不同,那么我如何订购这个集合?
我是这样做的:
for player in game.players! {
orderedPlayers.append(player as! Player)
}
orderedPlayers.sortInPlace({ [=10=].name < .name })
您可以使用 allObjects
从集合中获取数组,然后对对象进行排序。
let orderedPlayers = (game.players!.allObjects as! [Player]).sort { [=10=].name < .name }
如果您将集合声明为本机 Swift 类型 Set<Player>
– CoreData 还支持 Swift 类型 – 您甚至可以省略类型转换和 allObjects
:
let orderedPlayers = game.players!.sort { [=11=].name < .name }
您可以像这样向 game
核心数据 class 添加下标:
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
}
我有一个 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,我相信这将是无序的,所以每次都可能不同,那么我如何订购这个集合?
我是这样做的:
for player in game.players! {
orderedPlayers.append(player as! Player)
}
orderedPlayers.sortInPlace({ [=10=].name < .name })
您可以使用 allObjects
从集合中获取数组,然后对对象进行排序。
let orderedPlayers = (game.players!.allObjects as! [Player]).sort { [=10=].name < .name }
如果您将集合声明为本机 Swift 类型 Set<Player>
– CoreData 还支持 Swift 类型 – 您甚至可以省略类型转换和 allObjects
:
let orderedPlayers = game.players!.sort { [=11=].name < .name }
您可以像这样向 game
核心数据 class 添加下标:
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
}