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

Posted

技术标签:

【中文标题】尝试通过错误处理获取 String[] 中元素的索引【英文标题】:Try to get Index of element in String[] with error handling 【发布时间】: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> 【参考方案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.

【讨论】:

以上是关于尝试通过错误处理获取 String[] 中元素的索引的主要内容,如果未能解决你的问题,请参考以下文章

js读取的数是数组形式怎么解决

通过 id 获取元素 - Angular2

C#中的数组

获取知道其元素的 QTableWidget 行的索引

通过 google-api-javascript-client 库通过批处理文件上传获取 404 错误

使用 Tensorflow 识别错误分类的图像