【问题标题】:Try to get Index of element in String[] with error handling尝试通过错误处理获取 String[] 中元素的索引
【发布时间】:2016-11-19 21:21:06
【问题描述】:

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

在 'try' 表达式中不会调用抛出函数

【问题讨论】:

  • Swift 中没有String[]。它叫[String],又名Array<String>

标签: swift


【解决方案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.
}

【讨论】:

    猜你喜欢
    • 2019-10-09
    • 2013-12-03
    • 1970-01-01
    • 2019-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-02
    • 1970-01-01
    相关资源
    最近更新 更多