我想存储嵌套字典的值,以便我的集合视图可以在以后使用它,而不必每次都循环搜索它。如果我尝试将循环放在我的cellforindexatpath函数中,我也认为它不会起作用(我可能是错的)。 “让能力阵容:[能力] = .....”在我的班级里面
最终我想要abilitiesArray =能力。 “heroForDetails.hero.abilities”是一个[String:[Ability]]所以我想返回[Ability],其执行者为heroForDetails.hero.id == heroId,因为在heroForDetails.hero.abilities中有多个键:值对。当前错误缺少关闭中的返回预期返回[能力]。
let abilitiesArray: [Ability] = { () -> ([Ability]) in
let val = heroForDetails.hero.abilities
for (heroId, abilities) in val {
if heroForDetails.hero.id == heroId {
return abilities
}
}
}()
“能力”是我计划使用的数组
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
if let cell = collectionView.dequeueReusableCellWithReuseIdentifier("AbilitiesCell", forIndexPath: indexPath) as? AbilitiesCell {
let ability: Ability
ability = abilitiesArray[indexPath.row]
cell.configureCell(ability)
return cell
}else {
return UICollectionViewCell()
}
}
我希望我能很好地解释这一点。我刚开始学习编码,所以任何帮助都会很棒。我也可能完全错了。
答案 0 :(得分:1)
在您的第一个代码段中,您似乎正在使用密钥在val
字典中查找项目。我希望这就是你想要做的。要做到这一点,您不需要遍历整个字典。这样做很慢。 (O(n))您可以使用下标来使用密钥(heroForDeails.hero.id
变量)访问字典。这要快得多(O(1))。
您可以将整个代码段缩短为一行:
let abilitiesArray = heroForDetails.hero.abilities[heroForDetails.hero.id]!
另外,我在你的帖子中没有看到问题...
答案 1 :(得分:0)
您可以通过
访问字典 let val = heroForDetails.hero.abilities
let abilities = val[heroForDeails.hero.id]
至于在你的cellforindexatpath中访问它,它应该没问题。不要担心关闭。