2014-09-10 135 views
0

我的項目從Xcode 6 Beta 1 - Xcode 6 Beta 6沒有錯誤/警告。當我更新到Beta 7時,Xcode開始告訴我我的項目中有大約170個錯誤。主要是SpriteKit方法/對象/屬性。它仍然給我錯誤的Xcode 6的實際版本。我知道這些事情不應該是一個問題,因爲我完全沒有問題在過去建立完全相同的代碼。舉個例子:自發的Swift編譯器錯誤

enter image description here

這種東西一切發生在我的項目。我已經卸載/重新安裝了Xcode Betas,以及幾次發佈,但無濟於事。這是我最大的項目,我非常沮喪,我無法弄清楚這一點。我不想在Objective-C中重寫我的整個項目。我打電話給Apple開發者支持,他們推薦的唯一的東西我已經嘗試過了,而且他們沒有工作。我似乎也無法在網上找到其他人有類似問題。

感謝您的任何幫助。

回答

1

我敢打賭,這是關於隱含的解包選項變成「正常」選項。

嘗試追加隱含展開的可選操作!physicalBody被引用的每一行,如:

blockSprite.physicalBody!.categoryBitMask = ... 

如果確實解決了問題,那麼更安全的代碼,我建議你到指定的新實例SKPhysicalBody給一個變量,做所有的初始化,然後把這個變量賦值給blockSprite.physicalBody。這樣你就不必處理可選項。作爲一般規則,即使您100%確定可選包含非零值,最好避免隱式解包選項 - 在運行時避免頭痛,如果碰巧解包變量實際上爲零。

+0

再次添加隱式展開的可選操作員在幾個地方和建築後,我收到了同樣的錯誤在這些線上。 – AaronChapmanDev 2014-09-10 18:48:44

+0

你可以發佈修改後的代碼嗎?無論是在你的問題中,還是在主旨(或類似) – Antonio 2014-09-10 18:56:43

1

它看起來像SKNodephysicsBody財產現在是一個可選項。造成這種情況的最簡單的解決將是創建一個SKPhysicsBody實例,配置它,然後將其分配給您的節點:

let blockSprite = SKSpriteNode(...) 
blockSprite.position = ... 
// etc 
let physicsBody = SKPhysicsBody(rectangleOfSize: blockSprite.size) 
physicsBody.categoryBitMask = ContactCategory.block 
// etc 
blockSprite.physicsBody = physicsBody