【发布时间】:2017-03-04 12:43:43
【问题描述】:
我有一个array 的超级英雄 对象。我想根据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)
根据 cmets,我想要子数组的原因是因为我想使用它们来填充不同的 tableview 部分。对于即在我的表格视图中,我现在将有 2 个部分。第一部分会有一个标题,上面写着“蝙蝠侠”,里面有 2 个蝙蝠侠对象,第二部分有一个标题,上面写着超人,里面有 2 个超人对象。 count 属性将显示每个部分内的超级英雄对象的数量。
【问题讨论】:
-
使用
superHeroes.map创建一个超级英雄名称数组,然后将该数组放入 NSCountedSet。工作完成 -
您说您希望输出为
[[superHero2, superHero3], [superHero1, superHero4]]这是一个数组数组,其中您在第一个子数组中有 2 个来自排序数组的元素,然后在第二个子数组中有 2 个其他元素-大批。为什么?除了对你的超级英雄对象进行任意分组之外,这种结构是什么意思?如果您想要一个通用的解决方案,您需要笼统地描述您的目标,而不是给出一个示例数据集和一个示例结果。这些信息不足以让我们推断您想要使用的过程以获得结果。 -
从你的问题的第一部分,我想你会希望你的输出是
[name1, name2, name3, name4]和[power1, power2, power3, power4](一个排序的名称数组和一个排序的超级英雄对象的功率值数组) .但是你所说的期望输出对我来说没有任何意义。 -
请编辑您的问题以明确说明您的目标。事实上,我们必须猜测。
标签: ios arrays swift sorting filter