[英]Saving specific objects from array into new array
我有一個名為teamArray的數組,其中包含一個具有id,name和shortname的teamObject。 這些名稱將循環並填充到tableView中。 可以選擇所有這些單元格,並且當選擇一個單元格時,會將indexPath插入到cellSelected數組中。 我想將選擇的單元格id從teamArray保存到新數組中。 所以我想我需要將cellSelected數組indexPath與teamArray進行比較? 我怎樣才能做到這一點?
數組
var teamArray = Array<Team>()
var cellSelected = NSMutableArray()
didSelectRowAtIndexPath
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
tableView.deselectRowAtIndexPath(indexPath, animated: true)
if (self.cellSelected.containsObject(indexPath)) {
self.cellSelected.removeObject(indexPath)
} else {
self.cellSelected.addObject(indexPath)
}
tableView.reloadData()
}
teamObject
class Team: NSObject{
var id: Int!
var name: NSString!
var shortname: NSString!
init(id: Int, name:NSString, shortname: NSString) {
self.id = id
self.name = name
self.shortname = shortname
}
}
var teamSelected = [Team]()
在您的didSelectRowAtIndexPath
函數中:
let team = self.teamArray[indexPath.row] as Team
var removed = false
for (index, value) in enumerate(self.teamSelected) {
if (value == team) {
self.teamSelected.removeAtIndex(index)
removed = true
}
}
if (!removed) {
self.teamSelected.append(team)
}
在您的cellForRowAtIndexPath
函數中:
let team = self.teamArray[indexPath.row] as Team
var removed = false
for (index, value) in enumerate(self.teamSelected) {
if (value == team) {
cell.accessoryView = cell.accessoryCheck
removed = true
}
}
if (!removed) {
cell.accessoryView = cell.accessoryUncheck
}
然后,當您要訪問所選Team
的ID時,可以遍歷teamSelected
編輯:更改了名稱cellSelected
到teamSelected
您的主要teamArray
,已在TableView
加載
var teamArray = ["Kirit Modi","Kirit Modi 1","Kirit Modi 2","Kirit Modi 3","Kirit Modi 4","Kirit Modi 5","Kirit Modi 6","Kirit Modi 7","Kirit Modi 8","Kirit Modi 9"]
和cellSelected
,
var cellSelected = : [String] = []
在TableView
委托didSelectRowAtIndexPath
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
{
if contains(cellSelected, Name[indexPath.row])
{
cellSelected.removeObject(Name[indexPath.row])
}
else{
cellSelected.append(Name[indexPath.row])
}
}
使用以下函數從數組中刪除對象。
extension Array {
mutating func removeObject<U: Equatable>(object: U) {
var index: Int?
for (idx, objectToCompare) in enumerate(self) {
if let to = objectToCompare as? U {
if object == to {
index = idx
}
}
}
if(index != nil) {
self.removeAtIndex(index!)
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.