传递 int EXC_BREAKPOINT(code=1 Swift Xcode ios) 时出错
Posted
技术标签:
【中文标题】传递 int EXC_BREAKPOINT(code=1 Swift Xcode ios) 时出错【英文标题】:Error when passing an int EXC_BREAKPOINT(code=1 Swift Xcode ios 【发布时间】:2015-02-17 13:03:06 【问题描述】:在 for 循环中将 let 变量作为标记传递时出现错误,但在将变量替换为数字时却没有。我可以 println(i) 并返回一个数字。 为什么不接受它作为密钥?
我也尝试将 var 设置为具有相同结果的计数器
我收到以下错误: swift_dynamicCastObjCClassUnconditional
完全错误: 线程 1:EXC_BREAKPOINT(code=1, subcode=0x1001ee4b0)
func updateThing()
for (i, img) in enumerate(thingState)
switch img
case 0:
image = UIImage(named: "0.png");
break
case 1:
image = UIImage(named: "1.png");
break
case 2:
image = UIImage(named: "2.png");
break
default:
image = UIImage(named: "x.png");
thing = self.view.viewWithTag(i) as UIButton;
thing.setImage(image, forState: .Normal);
但是如果我用数字替换 i 没有错误并且带有指定标签的图像发生变化,如果我 println(i) 每次通过都会得到一个数字
thing = self.view.viewWithTag(2) as UIButton;
【问题讨论】:
【参考方案1】:您要确保您的视图是按钮,否则它将无法投射您的视图。
func updateThing()
for (i, img) in enumerate(thingState)
switch img
case 0:
image = UIImage(named: "0.png");
break
case 1:
image = UIImage(named: "1.png");
break
case 2:
image = UIImage(named: "2.png");
break
default:
image = UIImage(named: "x.png");
if let thing = self.view.viewWithTag(i) as? UIButton
thing.setImage(image, forState: .Normal)
可选的转换运算符 (as?
) 优于转换运算符 (as
),因为它不会在转换失败时使您的应用崩溃。
哦,分号在 Swift 中是没用的 :)
编辑:
在最新的 Swift 版本中,as
已替换为 as!
,但 as
仍然存在。
as!
用于强制施法而不检查,容易出现卡顿。您主要使用它来向下转换,并且您绝对确定对象的类型。
as
可以用作向上转换,例如 CAShapeLayer
到 CALayer
或其他特殊情况,例如 [NSObject:AnyObject]
到 NSDictionary
。向下转换将无法编译。
【讨论】:
谢谢!那行得通,我现在也明白为什么 现在有三种类型的演员表,我因此更新了我的答案。【参考方案2】:问题是您没有声明i
,而是从thingState
隐式获取它。没有看到后者的声明很难说,但我想你需要这样做
thing = self.view.viewWithTag(Int(i)) as UIButton
是的:分号是多余的;以及break
【讨论】:
全局enumerate
函数返回一个带有索引和对象的元组。我没有在 Swift 文档中看到索引的类型
索引取自thingState
的声明。我想这类似于[String:AnyObject]
而不是[Int:AnyObject]
。所以编译器采用String
。如果你使用Int(...)
投射它应该没问题。【参考方案3】:
这个问题是你错误地删除了按钮。 并且您必须看到您的 StoryBoard 屏幕或 Xib 文件。 我想你删除了按钮。
【讨论】:
【参考方案4】:我遇到了同样的问题,我尝试了 Shift+Cmd+K 来清理项目并解决了问题
【讨论】:
以上是关于传递 int EXC_BREAKPOINT(code=1 Swift Xcode ios) 时出错的主要内容,如果未能解决你的问题,请参考以下文章
使用 self.window?.makeKeyAndView() 时的 EXC_BREAKPOINT
错误 - EXC_BREAKPOINT(代码=1,子代码=0x100308448)
App Store 崩溃报告 EXC_BREAKPOINT (SIGTRAP)
线程 1: EXC_BREAKPOINT (code=1, subcode=0x10136bb50) - swift