[英]How to sort custom data objects into an empty array by NSNumber property -Swift2 iOS
[英]Swift iOS -How to sort array of individual objects into separated arrays based on similar property
我有array
的Super Hero對象。 我想將基於name property
的超級英雄分組到separated arrays
,然后計算每個單獨的separated array
有多少個對象
賓語:
class SuperHero{
var name: String?
var power: Bool?
}
超級英雄數組(可以有無數個超級英雄)
var superHeroes = [SuperHero]()
let superHero1 = SuperHero()
superHero1.name = "SuperMan"
superHero1.power = true
superHeroes.append(superHero1)
let superHero2 = SuperHero()
superHero2.name = "BatMan"
superHero2.power = true
superHeroes.append(superHero2)
let superHero3 = SuperHero()
superHero3.name = "BatMan"
superHero3.power = true
superHeroes.append(superHero3)
let superHero4 = SuperHero()
superHero4.name = "SuperMan"
superHero4.power = true
superHeroes.append(superHero4)
//etc...
使用名稱屬性進行排序:
let sortedHeros = superHeroes.sort{$0.name < $1.name}
for hero in sortedHeros{
print(hero.name)
/*
prints
BatMan
BatMan
SuperMan
SuperMan
*/
}
如何將排序后的數組放入單獨的數組中,然后打印每個單獨的數組的計數?
//this is what I want
separatedArraysOfSuperHeroes = [[superHero2, superHero3], [superHero1, superHero4]]
//subscriprting isn't ideal because i'll never know the exact number of separated arrays
print(separatedArraysOfSuperHeroes[0].count)
print(separatedArraysOfSuperHeroes[1].count)
根據評論,我想要子數組的原因是因為我想使用它們來填充不同的tableview部分。 例如,在我的tableview中,我現在有兩個部分。 第一部分的標題為“ Batman”,里面有2個蝙蝠俠對象,第二部分的標題為“超人”,里面有2個超人對象。 count屬性將顯示每個部分中超級英雄對象的數量。
func getSeparatedArrayBasedOnName(superHeroes: [SuperHero]) -> [[SuperHero]] {
guard let superNames = NSOrderedSet.init(array: superHeroes.map { $0.name ?? "" }).array as? [String] else {
print("Something went wrong with conversion")
return [[SuperHero]]()
}
var filteredArray = [[SuperHero]]()
for superName in superNames {
let innerArray = superHeroes.filter({ return $0.name == superName })
filteredArray.append(innerArray)
}
for array in filteredArray {
for hero in array {
print(hero.name ?? "")
}
}
return filteredArray
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.