制作图像库让我能够从我制作的集合视图中选择多个图像 当我有趣的时候我的代码避免是好的,但是当我按下选择按钮时会发生此错误" EXC_BAD_INSTRUCTION(代码= EXC_1386_INVOP,子代码= 0x0)"
这是选择按钮代码
@IBAction func Select(sender: AnyObject) {
var ckeck = AssetCell() as? AssetCell
ckeck!.CheckMarkView1.hidden = false // here it shows an error which is "Thread 1:EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)"
}
我的Assetcell类包含CheckMarkView1
答案 0 :(得分:1)
当你说ArrayList<String> a=new ArrayList<String>();
ArrayList<String> b=new ArrayList<String>();
b.addAll(a);
时,这意味着你的LinkedHashSet<String> result=new LinkedHashSet<String>(b);
是一个可选的,这意味着它可以是某种东西,或者它可以是零(无)。
当您在下一行中说AssetCell() as? AssetCell
时,这意味着您告诉编译器只处理ckeck
的值,并且您不关心它是否为零。这几乎总是一个坏主意,因为你刚刚找到了困难的方法。
更好的方法是使用ckeck!
语法来解包或ckeck
语法。
所以你可以说:
if let
或者你可以说:
guard
这样,如果它确实有值,你肯定只能开始使用if let ckeck = ckeck {
ckeck!.CheckMarkView1.hidden = false
}
。
话虽如此,你实际创建guard let ckeck = ckeck else { return }
ckeck!.CheckMarkView1.hidden = false
的方式看起来有点奇怪:
ckeck
现在我不知道细节,但你不能说出来
ckeck
最后......这个问题已经以各种形式被提出了很多次。我知道当你遇到错误并且你不太了解发生的事情时会很沮丧,但是下次你应该开始搜索var ckeck = AssetCell() as? AssetCell
。这应该会返回很多答案来帮助您解决问题,或者至少可以帮助您了解正在发生的事情。对不起:)