检查 NSIndexPath 的行和节的开关
Posted
技术标签:
【中文标题】检查 NSIndexPath 的行和节的开关【英文标题】:switch that checks NSIndexPath's row and section 【发布时间】:2016-03-11 17:03:09 【问题描述】:我想设置一个 switch 语句来检查 NSIndexPath
的值。 NSIndexPath
是一个类,它包括(除其他外)部分和行(indexPath.row, indexPath.section
)
这就是我如何制定一个 if 语句来同时检查一行和一个部分:
if indexPath.section==0 && indexPath.row == 0
//do work
什么是快速切换翻译?
【问题讨论】:
也许有用:***.com/questions/30189505/…. 【参考方案1】:一种方式(这是因为 NSIndexPaths 本身是平等的):
switch indexPath
case NSIndexPath(forRow: 0, inSection: 0) : // do something
// other possible cases
default : break
或者您可以使用元组模式对整数进行测试:
switch (indexPath.section, indexPath.row)
case (0,0): // do something
// other cases
default : break
另一个技巧是使用switch true
和您已经使用的相同条件:
switch true
case indexPath.row == 0 && indexPath.section == 0 : // do something
// other cases
default : break
就我个人而言,我会使用 嵌套 switch
语句,我们在外部测试 indexPath.section
并在内部测试 indexPath.row
。
switch indexPath.section
case 0:
switch indexPath.row
case 0:
// do something
// other rows
default:break
// other sections (and _their_ rows)
default : break
【讨论】:
我同意您首选的嵌套方法,但第二种方法也可以使用switch (indexPath.row, indexPath.section) case(0,0): ...
@MartinR D'Oh!我就像 Tuple 先生,我仍然把球丢在那个人身上。
第二种方法看起来很棒。谢谢!
@matt 谢谢你的甜蜜回答【参考方案2】:
只需使用 IndexPath
而不是 NSIndexPath
并执行以下操作:
在 Swift 3 和 4 中测试:
switch indexPath
case [0,0]:
// Do something
case [1,3]:
// Do something else
default: break
第一个整数是section
,第二个是row
。
编辑:
我只是注意到上面这个方法没有matt的答案的元组匹配方法强大。
如果你使用 tuple,你可以这样做:
switch (indexPath.section, indexPath.row)
case (0...3, let row):
// this matches sections 0 to 3 and every row + gives you a row variable
case (let section, 0..<2):
// this matches all sections but only rows 0-1
case (4, _):
// this matches section 4 and all possible rows, but ignores the row variable
break
default: break
有关可能的 switch
语句用法的完整文档,请参阅 https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html。
【讨论】:
【参考方案3】:另一种方法是将switch
与if case
结合起来
switch indexPath.section
case 0:
if case 0 = indexPath.row
//do somthing
else if case 1 = indexPath.row
//do somthing
// other possible cases
else // default
//do somthing
case 1:
// other possible cases
default:
break
【讨论】:
以上是关于检查 NSIndexPath 的行和节的开关的主要内容,如果未能解决你的问题,请参考以下文章