如何对一组复杂的 GKEntity 中的所有元素进行排序?
How can I sort all elements in a complex set of GKEntity?
我有4个类像D_Entity,P_Entity,T_Entity and O_Entity
,定义如下:
class D_Entity : GKEntity {
var S_Comp : S_Component!
.............
}
class P_Entity : GKEntity {
var S_Comp : S_Component!
.............
}
class T_Entity : GKEntity {
var S_Comp : S_Component!
.............
}
class O_Entity : GKEntity {
var S_Comp : S_Component!
.............
}
是的,所有四个 类 都有相同的 S_Comp
成员,派生如下:
class S_Component : GKComponent {
.............
}
然后,我将 D_Entity,P_Entity,T_Entity and O_Entity
的所有对象插入到一个名为 entities
的变量中,该变量定义为:
var entities = Set <GKEntity>()
问题是:我想按照 S_Comp's position.y.
的顺序对 entities
中的所有元素进行排序(S_Comp
派生自具有成员 position
).在Swift2中,例子显示:
let ySortedEntities = entities.sort {
let nodeA = [=13=].0.componentForClass(S_Component.self)!.node
let nodeB = [=13=].1.componentForClass(S_Component.self)!.node
return nodeA.position.y > nodeB.position.y
}
然而,在Swift4或5中,Xcode报错:
Value of type 'Set<GKEntity>' has no member 'sort'
我在GKEntity
里也发现了一个叫sorted
的函数,但是不知道在这么复杂的集合里怎么用
有人知道怎么解决吗?
非常感谢。
在Swift 5 Set没有排序功能
因此,您可以像这样使用 Sorted 函数:
let ySortedEntities = entities.sorted(by: {
let nodeA = [=10=].0.componentForClass(S_Component.self)!.node
let nodeB = [=10=].1.componentForClass(S_Component.self)!.node
return nodeA.position.y > nodeB.position.y
})
我有4个类像D_Entity,P_Entity,T_Entity and O_Entity
,定义如下:
class D_Entity : GKEntity {
var S_Comp : S_Component!
.............
}
class P_Entity : GKEntity {
var S_Comp : S_Component!
.............
}
class T_Entity : GKEntity {
var S_Comp : S_Component!
.............
}
class O_Entity : GKEntity {
var S_Comp : S_Component!
.............
}
是的,所有四个 类 都有相同的 S_Comp
成员,派生如下:
class S_Component : GKComponent {
.............
}
然后,我将 D_Entity,P_Entity,T_Entity and O_Entity
的所有对象插入到一个名为 entities
的变量中,该变量定义为:
var entities = Set <GKEntity>()
问题是:我想按照 S_Comp's position.y.
的顺序对 entities
中的所有元素进行排序(S_Comp
派生自具有成员 position
).在Swift2中,例子显示:
let ySortedEntities = entities.sort {
let nodeA = [=13=].0.componentForClass(S_Component.self)!.node
let nodeB = [=13=].1.componentForClass(S_Component.self)!.node
return nodeA.position.y > nodeB.position.y
}
然而,在Swift4或5中,Xcode报错:
Value of type 'Set<GKEntity>' has no member 'sort'
我在GKEntity
里也发现了一个叫sorted
的函数,但是不知道在这么复杂的集合里怎么用
有人知道怎么解决吗?
非常感谢。
在Swift 5 Set没有排序功能
因此,您可以像这样使用 Sorted 函数:
let ySortedEntities = entities.sorted(by: {
let nodeA = [=10=].0.componentForClass(S_Component.self)!.node
let nodeB = [=10=].1.componentForClass(S_Component.self)!.node
return nodeA.position.y > nodeB.position.y
})