Tag: 不良指示

Swift:如果key不存在,decodeObjectForKey会崩溃

我正在使用下面的Swift代码解压缩一个Swift类: required convenience init(coder decoder: NSCoder) { self.init() horseID = decoder.decodeIntegerForKey("horseID") name = decoder.decodeObjectForKey("name") as String! // if the thumb key does not exist, the following line crashes thumb = decoder.decodeObjectForKey("thumb") as UIImage! } 稍后添加“拇指”类成员。 我有一个没有拇指数据的旧档案文件。 苹果的文档说,取消存档不存在的密钥返回零。 这是熟悉的Objective-C行为。 我的Swift代码崩溃,错误代码为:EXC_BAD_INSTRUCTION(code = EXC_I386_INVOP,subcode = 0x0)。 从as? 并没有消除这个问题。 这使得在新版本中扩展数据模型变得困难。 难道我做错了什么? 我是Swift新手。

如何从数组中随机抽取项目在Swift中?

我试图从数组中拉出一个随机项目。 当我跑,它拉近一个随机项目和给我这个错误“EXC_BAD_INSTRUCTION”大约50/50。 任何想法发生了什么? 现在我的代码如下所示: BEFORE Solution func randomCard() -> Card { let randomIndex = Int(arc4random()) % cardArray.count let randomCard = cardArray[randomIndex] cardArray.removeAtIndex(randomIndex) return randomCard } 后 func randomCard() -> Card { let randomIndex = arc4random_uniform(UInt32(cardArray.count)) let randomCard = cardArray[randomIndex.hashValue] cardArray.removeAtIndex(randomIndex.hashValue) return randomCard } 这是我现在使用,似乎正在工作。感谢大家的帮助。