尝试通过错误处理获取 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[] 中元素的索引的主要内容,如果未能解决你的问题,请参考以下文章