我不完全确定这是否可行..我开始使用空数组。我有一个每个都有不同数字的tableview。当用户单击一个单元格时,所选的数字将附加到数组中。
现在,我面临的问题是用户可以按任意顺序点击任何单元格,但我需要对我的数组进行排序,以便单元格1与索引1匹配,单元格2与索引2匹配,依此类推。
我到目前为止所尝试的是追加。但是这会无序地插入数字。我已经尝试过插入,但是在第一次选择表明索引超出范围后会抛出错误。
编辑:
我有一个带数字的tableView,按数字顺序排列:1,2,3,4 ...用户点击一个数字,该数字被附加到数组中。
用户可以按任意顺序选择任何数字,例如:1,3,4,2 ..我最终会得到一个[1,3,4,2]数组。我需要订购数字,以便如果用户选择3,它将最终在数组的第三个索引中。
感谢任何帮助
答案 0 :(得分:1)
Array
' append
和sort
函数应该可以正常使用您所描述的内容:
// Use `var`, not `let` - you're going to change this value over time!
var tappedNumbers: [Int] = []
// You can then append numbers in order, like this:
tappedNumbers.append(2)
tappedNumbers.append(5)
tappedNumbers.append(1)
tappedNumbers.sort() // this returns the array [1, 2, 5]
// If you don't want duplicates, try using Set instead of Array:
var tappedSet: Set<Int> = []
tappedSet.insert(2)
tappedSet.insert(5)
tappedSet.insert(1)
tappedSet.insert(5) // see, we're double-inserting 5 here...
tappedSet.count // returns 3, because there are only 3 unique entries
tappedSet.sort() // returns [1, 2, 5]
将此代码放入Swift Playground并自行尝试 - 这是您所描述的内容吗?
答案 1 :(得分:0)
您可以尝试从一组Value:- **YOUR JDK PATH UPTO BIN FOLDER** , AT END ";"
个对象开始,这些对象的大小与表视图中的行数相同。然后,当用户选择行时,将该索引处的NSNull
替换为所选数字。
答案 2 :(得分:0)
假设您要求的是一种将单元格索引与单元格值相关联的方法,那么您应该做什么。不要使用单元格中单元格位置的值作为单元格索引,而是使用包含单元格索引和单元格值的字典或元组数组。这是一个例子:
var myDict = Dictionary<Int,Int>()
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let cellvalue = tableView.cellForRowAtIndexPath(indexPath)!.textLabel!.text
myDict.append((index: indexPath.row, value: cell value))
}
或使用元组:
typealias myTuple = (index: Int, value: Int)
var myTupleArray = Array<myTuple>()
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let cellvalue = tableView.cellForRowAtIndexPath(indexPath)!.textLabel!.text
myDict.append((index: indexPath.row, value: cell value))
}
答案 3 :(得分:0)
对于寻找答案的任何人..下面的代码将创建一个包含4个nil
占位符的数组。
var array = [Int?](count: 4, repeatedValue: nil)
以所使用的正确索引获取所选项目
array[indexPath.row] = tableView.cellForRowAtIndexPath(indexPath)!.textLabel!.text
答案 4 :(得分:0)
我同意@bryanjclark。
我不确定创建一个充满'nil'的数组(正如你在自己的答案中所建议的那样)是理想的解决方案。
再次,正如@bryanjclark建议的那样,我会使用Set
。
var indexSet:Set<Int> = []
// click on index 1
indexSet.insert(1)
// click on index 5
indexSet.insert(5)
// get all clicked cell indexes back in order
let sortedIndexes = indexSet.sort()
// check if a index is in the clicked set
if indexSet.contains(3) {
print("contains")
} else {
print("does not contain")
}
答案 5 :(得分:0)
我不确定你将如何使用你的阵列,但我不建议你使用你自己的答案。
您可以使用Dictionary
:
var dict: [Int: Int] = [:]
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
dict[indexPath.row +1] = indexPath.row + 1
}