在 iOS 中循环遍历数组
Posted
技术标签:
【中文标题】在 iOS 中循环遍历数组【英文标题】:Cycle through array in iOS 【发布时间】:2016-01-26 22:09:53 【问题描述】:在这个应用程序中,我将一个 NSOrderedSet 卡片保存到核心数据中的“主题”实体中,以便用户可以自行测验。卡片像时尚一样翻转和拖动,但在更新卡片方法中我遇到了一些麻烦。当前卡片显示正常,因为我在视图中设置了加载(NSOrderedSet 数组属性的第一张卡片)。但是,当我拖动和更新时,它会立即转到最后一张牌,例如,如果我在一副牌中有 5 张牌,它将从第一张开始,然后立即转到第五张。更新此方法以使其根据需要循环执行的最佳方法是什么?
我想我应该将 index 属性传递给它,例如 tableViewDelegate 方法,但是如果有人以前做过类似的事情并且有更好的方法,那将不胜感激。
一如既往地感谢您的帮助。
func updateCard()
//cycle through questions here
for var i = 0; i < (self.subject.cards?.count)!; i++
self.currentCard = self.subject.cards?.array[i] as? Card
self.draggableView.questionLabel.text = self.currentCard?.question
self.draggableView.answerLabel.text = self.currentCard?.answer
【问题讨论】:
google for % 运算符(modolo 或 rest 运算符) 您的代码没有意义,它总是会设置与最后一张卡片对应的值,因为您在下一次迭代中覆盖了先前设置的值。你想在两者之间发生什么?答案可能是:不要使用循环。 代码很有意义,但是正如您所说编译器会自动跳到最后一个索引,我知道问题出在哪里,但认为有一种方法可以逐个循环遍历数组。 【参考方案1】:目前,当您调用 updateCard
时,for 循环正在以计算机速度进行计算,您只能看到最后一个索引。
这是一种选择:
在您的类中,设置一个名为 selectedCardIndex 的存储变量作为实现细节,然后在 updateCard
中增加和更新视图。
var selectedCardIndex = 0
func updateCard()
self.selectedCardIndex += 1
self.currentCard = self.subject.cards?.array[self.selectedCardIndex] as? Card
self.draggableView.questionLabel.text = self.currentCard?.question
self.draggableView.answerLabel.text = self.currentCard?.answer
【讨论】:
以上是关于在 iOS 中循环遍历数组的主要内容,如果未能解决你的问题,请参考以下文章