Tag: 切换语句

Swift:切换具有多个模式的案例不能绑定到variables

在官方的Swift编程语言指南中,对于switch case有这样的说法:“…如果case包含多个匹配控制expression式的模式,那么这些模式都不能包含常量或variables绑定。 包含多种模式是什么意思?

Swift:简化菜单button逻辑

我在Swift中有一个游戏,每个关卡都是一个从GameScene基类inheritance而来的单独的类(这样做对于我所做的事来说更简单了,不要评价我)。 我也有一个菜单,每个级别都有一个button。 这是button如何加载级别: override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { if let t = touches.first { let node = atPoint(t.location(in: self)) if let name = node.name { let newScene: GameScene! switch Int(name)! { case 1: newScene = Level1(size: frame.size) case 2: newScene = Level2(size: frame.size) case 3: newScene = Level3(size: frame.size) case 4: […]

PrepareForSegue神秘

我在两个不同的VC中有一个prepareForSegue方法。 一个使用if语句,另一个使用switch 。 代码实际上是相同的,除了名称。 这个工作正常: – (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { NSManagedObjectContext *localContext = [NSManagedObjectContext MR_contextForCurrentThread]; if ([[segue identifier] isEqualToString:@"addActivity"]) { UINavigationController *navController = (UINavigationController *)segue.destinationViewController; AddActivityViewController *aavc = (AddActivityViewController *)navController.topViewController; aavc.delegate = self; ListActivity *addedActivity = (ListActivity *)[ListActivity MR_createInContext:localContext]; aavc.thisActivity = addedActivity; } 这个给了我两个警告。 在第一行,我得到一个“预期的expression”警告。 在第二行,我得到“使用未声明的标识符”NavController“。 -(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { NSManagedObjectContext *localContext = […]

Swift – 确定哪个button是用开关按下的

我有4个button,调用一个function。 取决于哪个button被按下,我需要隐藏button内部的button之后调用的函数。我不知道哪个button被按下,所以我试图为每个4button分配标签,以标识和使用开关 我试过这个 switch sender.tag { case 1: self.button1.hidden = true case 2: self.button2.hidden = true case 3: self.button3.hidden = true case 4: self.button4.hidden = true } 但这不工作编译器说关于使用未parsing的标识符“发件人” 如何正确地做到这一点? 编辑: 整个function if self.allowMistakeVar { let mistakeAlert = UIAlertController(title: "Here is title!", message: "message of alert", preferredStyle: .Alert) let okay = UIAlertAction(title: "OK", style: .Cancel) { […]

在Swift中切换语句

我正在学习Swift的语法,并想知道为什么下面的代码不能像我期望的那样工作: for i in 1…100{ switch (i){ case 1: Int(i%3) == 0 println("Fizz") case 2: Int(i%5) == 0 println("Buzz") default: println("\(i)") } } 我想打印Fizz每次数字被3(3,6,9,12等)整除,每打印5次就可以打印Buzz。缺less什么拼图? 注意:我用下面的方法解决了这个问题: for ( var i = 0; i < 101; i++){ if (Int(i%3) == 0){ println("Fizz") } else if (Int(i%5) == 0){ println("Buzz") } else { println("\(i)") } } 我想知道如何解决这个使用开关。 谢谢。