【发布时间】:2017-11-16 08:19:15
【问题描述】:
我正在尝试遍历名称数组以获取某个字符串的索引。然后我想将我的 UIPicker 的索引设置为所述字符串。
我有以下代码,但这会导致应用程序崩溃:
let index = self.nameArray.index(where: {$0 == assetArray[0].Owner })
scroll_owners.selectRow(index ?? 0, inComponent: 0, animated: true)
在调试索引时,索引的值是 6176573120,这当然不在我的 UIPicker 的范围内,因此会导致崩溃。
关于为什么会发生这种情况的任何想法?
使用建议的答案会引发以下错误:
unrecognized selector sent to instance 0x101134af0'
assetArray[0] 中肯定存在与正在传递的名称的匹配项。
尝试单独运行以下代码行进行更多调查会产生相同的错误:
scroll_owners.selectRow(0, inComponent: 0, animated: true)
这是否意味着我缺少委托方法?
资产数组和名称数组:
var assetArray : [Asset] = []
var nameArray = [String]()
编辑:
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
self.scroll_owners.delegate = self
self.scroll_owners.dataSource = self
我试图让这个工作以另一种方式工作 - 我知道这是一种丑陋的做事方式我只是想看看为什么公认的快速方式不起作用:
var i : Int = 0
while (nameArray[i] != name)
{
print(nameArray[i])
i=i+1
}
scroll_owners.selectRow(i, inComponent: 0, animated: true)
由于索引超出范围,这部分代码崩溃并且永远不会进入 while 循环 - 这是否意味着问题可能出在 nameArray 上?
【问题讨论】:
-
你能用assetArray类和nameArray的声明更新问题吗
-
还有它是否说它无法识别哪个选择器?
-
[UIView numberOfComponentsInPickerView:]:无法识别的选择器发送到实例 0x154037720
-
看起来
scroll_owners不是UIPicker -
@IBOutlet weak var scroll_owners: UIPickerView!
标签: arrays swift uipickerview