2016-09-17 72 views
-1

我知道已經有發佈任何有關這幾個「相似」的錯誤展開一個可選值,但他們似乎並不被幫助我在我的情況。也有可能的語法不工作,我如何期待它在斯威夫特工作:迅速致命錯誤:意外發現零,而與任何數組

有沒有編譯錯誤,或警告,只是一個運行時錯誤

var allPlayerSpawnState: Array<Array<Any>>! 

var pName: String = "defaultPlayerName" 
var pShape = "box" 
var pDimensions = SCNVector4(1,1,1,0) 
var pPosition = SCNVector3(0, 0, 0) 
var pRotation = SCNVector3(0, 0, 0) 
var pForce = SCNVector3(0, 0, 0) 
var pTorque = SCNVector4(0, 0, 0, 0) 
var pSkinArray = [UIColor]() 
var pEmitter = false 
var pEmitterUIColor = UIColor.random() // custom random color 
var pState: SCNPhysicsBodyType = .Static 

... values change here 

print("\n\(pName)") 
print(pShape) 
print(pDimensions) 
print(pPosition) 
print(pRotation) 
print(pForce) 
print(pTorque) 
print(pSkinArray) 
print(pEmitter) 
print(pEmitterUIColor) 
print("\(pState)\n") 

let tempArray: Array<Any> = [pName, pShape, pDimensions, pPosition, pRotation, pForce, pTorque, pSkinArray, pEmitter, pEmitterUIColor, pState] 
allPlayerSpawnState.append(tempArray) // runtime error here: "Thread 1: EXE_BAD_INSTRUCTION (code=EXE_I386_INVOP, subcode=0x0)" 

... later wanting to use it like this: 

for i in allPlayerSpawnState { 
    some_function(i[0] as! String, pShape: i[1] as! String, pDimensions: i[2] as! SCNVector4, pPosition: i[3] as! SCNVector3, pRotation: i[4] as! SCNVector3, pForce: i[5] as! SCNVector3, pTorque: i[6] as! SCNVector4, pSkinArray: i[7] as! [UIColor], pEmitter: i[8] as! Bool, pEmitterUIColor: i[9] as! UIColor, pState: i[10] as! SCNPhysicsBodyType) 
} 

,這裏是輸出

nameOfPlayer 
sphere 
SCNVector4(x: 1.0, y: 1.0, z: 1.0, w: 0.0) 
SCNVector3(x: 0.0, y: -10.0, z: 0.0) 
SCNVector3(x: 0.0, y: 0.0, z: 0.0) 
SCNVector3(x: 0.0, y: 0.0, z: 0.0) 
SCNVector4(x: 0.0, y: 0.0, z: 0.0, w: 0.0) 
[UIDeviceRGBColorSpace 1 0 1 1] 
true 
UIDeviceRGBColorSpace 0 1 0 1 
SCNPhysicsBodyType 

fatal error: unexpectedly found nil while unwrapping an Optional value 

當我選擇單擊數組中的元素,它們都不是可選的,所以我不知道錯誤試圖指示什麼。

任何幫助表示讚賞。如果你知道一種方法,我可以做到這一點,而不使用「任意」,可以幫助我阻止後表示未來潛在的問題「......以後想要做這樣的:」

回答

1

該數組聲明但尚未初始化。目前你要追加一些東西到數組中,它是nil,並導致運行時錯誤。

初始化數組是這樣的:

var allPlayerSpawnState = Array<Array<Any>>() 
+0

你知道,當你花4小時在尋找的東西,然後它需要別人2秒看着辦吧?我有一個這樣的時刻。非常感謝,謝謝 – brw59

+3

儘可能地嘗試使用非可選類型。它極大地減少了這些錯誤。 – vadian

相關問題