尝试使用错误处理获取String []中的元素索引

时间:2016-11-19 21:21:06

标签: swift

我使用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)!

  

在尝试'尝试'表达

1 个答案:

答案 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.
}