我想在iOS上制作一个俄罗斯方块游戏项目。但是我在这张照片中遇到了这个问题。 Xcode出现此错误,我无法修复它。我曾经认为,一个Shape类有7个不同的Shape子类,我将它们分成8个文件,包括Shape类,可能会出现这个ERROR。然后我将所有这些都放在一个文件中。然而,它又出现了。
以下是我的一些代码:
class Shape: Hashable, CustomStringConvertible{
let color: BlockColor
var blocks = Array<Block>()
var orientation: Orientation
var column: Int = 0
var row: Int = 0
// 每个块中的每个小块的位置
var blockColRowPositions: [Orientation: Array<(col: Int, row: Int)>]{
return [:]
}
// 每个块在底部的形状
var bottomBlocksForOrientations: [Orientation: Array<Block>]{
return [:]
}
var bottomBlock: Array<Block>{
guard let bottomBlocks = bottomBlocksForOrientations[orientation] else{
return []
}
return bottomBlocks
}
var hashValue:Int{
return blocks.reduce(0) {$0.hashValue ^ $1.hashValue}
}
var description:String{
return "\(color) block facing \(orientation) : \(blocks[firstIndex]), \(blocks[secondIndex]), \(blocks[thirdIndex]), \(blocks[forthIndex])"
}
// ....
}
class O_Shape: Shape {
// 每个块中的每个小块的位置
override var blockColRowPositions: [Orientation: Array<(column: Int, row: Int)>] {
return [
Orientation.zero: [(0,0),(1,0),(0,1),(1,1)],
Orientation.twoQuater: [(0,0),(1,0),(0,1),(1,1)],
Orientation.fourQuater: [(0,0),(1,0),(0,1),(1,1)],
Orientation.sixQuater: [(0,0),(1,0),(0,1),(1,1)]
]
}
override var bottomBlocksForOrientations: [Orientation: Array<Block>] {
return[
Orientation.zero: [blocks[thirdIndex], blocks[forthIndex]],
Orientation.twoQuater: [blocks[thirdIndex], blocks[forthIndex]],
Orientation.fourQuater: [blocks[thirdIndex], blocks[forthIndex]],
Orientation.sixQuater: [blocks[thirdIndex], blocks[forthIndex]]
]
}
}
答案 0 :(得分:0)
图片显示它在编译过程中崩溃了。这曾经是Swift相当常见的事情,但现在不太常见。
你要做的第一件事是确保你使用的是最新版本的Xcode,即7.2.1。
如果仍然发生编译崩溃,您可以通过找出导致崩溃的代码行来解决问题。我曾经通过注释掉整个文件然后逐个取消注释位直到它导致崩溃来做到这一点。
然后,您需要找到一种重写代码的方法,以避免崩溃,您还需要向Apple @ https://bugreport.apple.com发送错误报告。你抛出什么代码并不重要,编译器不应该崩溃,如果你的代码错误,它应该产生错误信息。