获取循环中相关元素的indexPath
问题描述:
我正在Swift 3.0中的一个项目中工作,我有一个循环可以给我一个对象的状态(在数组序列中给出一个布尔值)。我的要求是如果元素状态为“真”我想获得相关的索引路径,所以使用indexPath
我可以从我的原始数组中获取整个对象。因此,在一个循环内,我怎样才能得到这个呢?下面是我部分完成的代码。在评论中我已经说明了我想通过这个indexPath
的地方。获取循环中相关元素的indexPath
func tapFunction(sender: UIButton) {
// This gives me the selected indexPath
print("ID :",sender.accessibilityIdentifier!)
if let rowIndexString = sender.accessibilityIdentifier, let rowIndex = Int(rowIndexString) {
self.sateOfNewSongArray[rowIndex] = !self.sateOfNewSongArray[rowIndex]
}
sender.isSelected = !sender.isSelected
for (element) in self.sateOfNewSongArray {
//This is where I wants to pass the rowIndex that became true
if element == true {
selectedSongList.addingObjects(from: [songList[rowIndex]])
}
}
}
答
注意:请确保您的数组 'sateOfNewSongArray' 有布尔类型的元素
尝试以下解决方案:
示例代码1:根据您的问题中的当前代码。
func tapFunction(sender: UIButton) {
// This gives me the selected indexPath
print("ID :",sender.accessibilityIdentifier!)
if let rowIndexString = sender.accessibilityIdentifier, let rowIndex = Int(rowIndexString) {
self.sateOfNewSongArray[rowIndex] = !self.sateOfNewSongArray[rowIndex]
}
sender.isSelected = !sender.isSelected
for (index, element) in self.sateOfNewSongArray.enumerated() {
if element {
if let songName:String = songList[index] {
selectedSongList.append(songName)
}
}
}
}
示例代码2:更多更方便,简洁。
func tapFunction(sender: UIButton) {
// This gives me the selected indexPath
print("ID :",sender.accessibilityIdentifier!)
if let rowIndexString = sender.accessibilityIdentifier, let rowIndex = Int(rowIndexString) {
if let songName:String = songList[rowIndex] {
selectedSongList.append(songName)
}
}
}
枚举()是一个函数,(通过迭代阵列的元件)
这里是基本样本代码返回对与索引和数组的元素列举的序列,的理解。复制并执行此代码:
let songList = [“cat”, “dog”, “elephant”]
let sateOfNewSongArray = [false, true, false]
let selectedSongList = [String]()
for (index, element) in self.sateOfNewSongArray.enumerated() {
if element {
if let animalName:String = songList[index] {
selectedSongList.append(animalName)
}
}
}
print(“selectedSongList - \(selectedSongList)”)
尝试更新的答案,并让我知道,如果您有任何困惑。 – Krunal
我的数组类型是NSArray。所以这不会工作 – danu
不要在Swift中使用NSArray,声明你的数组,正如我在最后一个示例块中所示。示例字符串数组:let selectedSongList = [String]()在这里分享你的数组声明,我会帮你将数组转换成Swift数组。 – Krunal