2014-11-06 73 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

相關問題