Arrays 是否根据对象的属性在数组中组织对象?
如何根据对象的属性组织对象数组?例如,如果我有以下内容:Arrays 是否根据对象的属性在数组中组织对象?,arrays,swift,ios8,Arrays,Swift,Ios8,如何根据对象的属性组织对象数组?例如,如果我有以下内容: import UIKit import SpriteKit struct Person { let name : String! let age : Int! let charcter : characterType! enum characterType { case happy, sad, mad, scared, excited } } let people : [Pe
import UIKit
import SpriteKit
struct Person {
let name : String!
let age : Int!
let charcter : characterType!
enum characterType {
case happy, sad, mad, scared, excited
}
}
let people : [Person] = [
Person(name: "Bob", age: 10, charcter: Person.characterType.happy),
Person(name: "Joe", age: 45, charcter: Person.characterType.sad),
Person(name: "Tom", age: 105, charcter: Person.characterType.scared),
Person(name: "Mad", age: 3, charcter: Person.characterType.mad)
]
如何根据人物的字符类型组织人物
数组?
我希望所有疯狂的人在新的阵营里先是快乐,然后是悲伤,然后是恐惧
我该怎么做<代码>var newArray:[个人]…
还有一件事我已经试过了:
func organizeArray(){
var newArray = [Person]()
var array1 = []
var array2 = []
var array3 = []
var array4 = []
var array5 = []
for person in people {
switch person.charcter {
case happy...
append to array 1
case mad...
append to array 2
so on...
}
}
newArray = array1 + array2 + array3 + array4 + array5
}
但当我运行这个程序时,索引永远需要XCode。如果我删除这个函数,一切都正常。我想要一个简单的解决方案,并且不会导致XCode永远索引(很多)。您要做的是为每种字符类型创建一个单独的数组,然后将它们连接在一起。这是没有效率的。正如所建议的,您应该使用swift数组的排序功能,并以这种方式将原始值关联到枚举类型:
struct Person {
let name : String
let age : Int
let charcter : characterType
enum characterType: Int {
case mad = 0, happy, sad, scared, excited
}
}
let people : [Person] = [
Person(name: "Bob", age: 10, charcter: Person.characterType.happy),
Person(name: "Joe", age: 45, charcter: Person.characterType.sad),
Person(name: "Tom", age: 105, charcter: Person.characterType.scared),
Person(name: "Mad", age: 3, charcter: Person.characterType.mad)
]
let newArray = people.sorted { $0.charcter.rawValue < $1.charcter.rawValue }
println(newArray[0].charcter.rawValue) // Mad
println(newArray[1].charcter.rawValue) // Happy
println(newArray[2].charcter.rawValue) // Sad
println(newArray[3].charcter.rawValue) // Scared
struct-Person{
let name:String
年龄:Int
let character:characterType
枚举字符类型:Int{
case mad=0,快乐、悲伤、恐惧、兴奋
}
}
让人:[人]=[
人物(姓名:“鲍勃”,年龄:10岁,性格:Person.characterType.happy),
人物(姓名:“乔”,年龄:45,角色:Person.characterType.sad),
人物(姓名:“汤姆”,年龄:105,角色:Person.characterType.Fear),
Person(姓名:“Mad”,年龄:3岁,角色:Person.characterType.Mad)
]
设newArray=people.sorted{$0.character.rawValue<$1.character.rawValue}
println(newArray[0].character.rawValue)//Mad
println(newArray[1].character.rawValue)//Happy
println(newArray[2].character.rawValue)//Sad
println(newArray[3].character.rawValue)//
它真的会导致“Xcode永远索引”吗?我怀疑……我认为进入无限循环的是您的代码,而这实际上与Xcode无关(因为它只是编辑器,不是您的代码)至于如何对数组进行排序:使用它的sort
方法,并传入一个比较器闭包,该闭包使用您需要的任何属性来比较两个对象。@paramagneticscroissant我是说