2014-11-06 44 views
0

我有以下switch声明,它似乎是非常详尽的。开关语句必须是详尽的

switch (point.x > frame.origin.x, point.y > frame.origin.y) { 
case (true, true): // Bottom right 
    moveSubviewX = subview.frame.origin.x - moveBy 
    moveSubviewY = subview.frame.origin.y - moveBy 
case (false, true): // Bottom left 
    moveSubviewX = subview.frame.origin.x + moveBy 
    moveSubviewY = subview.frame.origin.y - moveBy 
case (true, false): // Top right 
    moveSubviewX = subview.frame.origin.x - moveBy 
    moveSubviewY = subview.frame.origin.y + moveBy 
case (false, false): // Top left 
    moveSubviewX = subview.frame.origin.x + moveBy 
    moveSubviewY = subview.frame.origin.y + moveBy 
} 

随着tuple具有两个Bool部件只有4个可能的变型。为什么我仍然有一个建议来包含“默认条款”?

+0

“点”是CGPoint吗? 'frame'是CGRect吗? – 2014-11-06 16:29:18

+0

正确,但'frame.origin'也是'CGPoint',所以我没有看到可能的冲突。 – 2014-11-06 16:30:00

+1

我要求确保不涉及任何可能的类型。 – 2014-11-06 16:31:29

回答

4

XCode仅在切换枚举时检查switch语句是否详尽。对于其他情况,它会检查是否存在默认语句,如果不存在,则会发出警告。

您可以使用枚举,或者如果您想要禁止警告,或者只是添加缺少的默认语句无所作为。

+0

你有任何参考链接来证实你的答案? – 2014-11-06 16:34:10

+0

我不认为我记得正式在任何地方看到它,但是如果您想知道哪些是您正在寻找的警告,可以查看此网站:http://www.futureworkshops.com/articles/xcode-warnings .html – Adis 2014-11-06 16:35:50

+0

好的,谢谢你@Adis – 2014-11-06 16:36:24

相关问题