我使用self.stnIdData.index(of: self.itemAtDefaultPositionId)!
来获取String []中元素的索引。如果 - 由于某种原因 - 元素不在数组中,我需要抛出一个错误。
我用以下代码尝试了它:
do {
var indexOfSelectedId = 0
try indexOfSelectedId = self.stnIdData.index(of: self.itemAtDefaultPositionId)!
var counter = 0
for currStn in self.pickerData {
if(counter == indexOfSelectedId){
self.itemAtDefaultPosition = currStn
}
counter += 1
}
print(" PV: itemAtDefaultPosition: \(self.itemAtDefaultPosition)")
var defaultRowIndex = self.pickerData.index(of: self.itemAtDefaultPosition!)
print(" PV: defaultRowIndex: \(defaultRowIndex)")
if(defaultRowIndex == nil)
{
defaultRowIndex = 0
}
self.stnPicker.selectRow(defaultRowIndex!, inComponent: 0, animated: true)
} catch let error{
print("Error while setting ID: \(error)")
}
但是我在xCode的这一行中收到了这个警告:try indexOfSelectedId = self.stnIdData.index(of: self.itemAtDefaultPositionId)!
:
在尝试'尝试'表达
答案 0 :(得分:1)
try
只能与声明为throw
的方法一起使用。 index(of:)
不是这种方法。由于index(of:)
会返回一个可选内容,因此只需使用if let
正常的可选展开即可。
if let indexOfSelectedId = self.stnIdData.index(of: self.itemAtDefaultPositionId) {
var counter = 0
for currStn in self.pickerData {
if(counter == indexOfSelectedId){
self.itemAtDefaultPosition = currStn
}
counter += 1
}
print(" PV: itemAtDefaultPosition: \(self.itemAtDefaultPosition)")
var defaultRowIndex = self.pickerData.index(of: self.itemAtDefaultPosition!)
print(" PV: defaultRowIndex: \(defaultRowIndex)")
if(defaultRowIndex == nil)
{
defaultRowIndex = 0
}
self.stnPicker.selectRow(defaultRowIndex!, inComponent: 0, animated: true)
} else {
// Not found - handle as needed.
}