簡體   English   中英

將特定對象從數組保存到新數組

[英]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

編輯:更改了名稱cellSelectedteamSelected

您的主要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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM