2015-12-02 73 views
0

您好,我剛剛更新到swift 2,並在我的數組中出現以下錯誤: 'NSMutableArray'不能隱式轉換爲'[AnyObject]';你的意思是用'as'來明確轉換嗎?將Swift 1數組代碼更新爲Swift 2時出錯

func addAlien(){ 

    var alien:SKSpriteNode = SKSpriteNode(imageNamed: "cuadradoRojo") 
    alien.name = "alien" 
    alien.physicsBody = SKPhysicsBody(circleOfRadius: alien.size.width/2) 
    alien.physicsBody?.dynamic = true 
    var actionArray:NSMutableArray = NSMutableArray() 
    var actionArray2:NSMutableArray = NSMutableArray() 
    alien.removeFromParent() 
    var alienAzul:SKSpriteNode = SKSpriteNode(imageNamed: "cuadradoAzul") 
    alienAzul.name = "alien" 
    alienAzul.physicsBody = SKPhysicsBody(circleOfRadius: alien.size.width/2) 
    alienAzul.physicsBody?.dynamic = true 
    alienAzul.removeFromParent() 
    if gameOver == false{ 


     let minX = alien.size.width/2 

     let maxX = self.frame.size.width - alien.size.width/2 

     let rangeX = maxX - minX 
     let position:CGFloat = CGFloat(arc4random()) % CGFloat(rangeX) + CGFloat(minX) 

     alien.position = CGPointMake(position, self.frame.size.height + alien.size.height) 
     alienAzul.position = CGPointMake(position, self.frame.size.height + alienAzul.size.height) 
     var randomCirculo = arc4random_uniform(2) 
     if randomCirculo == 0{ 
      self.addChild(alienAzul) 
     } 
     else { 
      addChild(alien) 
     } 

     let minDuration = 3 


     let duration = Int(minDuration) 



     actionArray.addObject(SKAction.moveTo(CGPointMake(position, -alien.size.height), duration: NSTimeInterval(duration))) 

     actionArray.addObject(SKAction.removeFromParent()) 
     actionArray2.addObject(SKAction.moveTo(CGPointMake(position, -alienAzul.size.height), duration: NSTimeInterval(duration))) 

     actionArray2.addObject(SKAction.removeFromParent()) 

     alien.runAction(SKAction.sequence(actionArray as [AnyObject])) 
     alienAzul.runAction(SKAction.sequence(actionArray as [AnyObject])) 

    }  
} 

我得到了錯誤DOWN HERE alien.runAction(SKAction.sequence(actionArray爲[AnyObject]))alienAzul.runAction(SKAction.sequence(actionArray爲[AnyObject]))

+0

你從哪裏得到錯誤 - 當你遵循編譯器的建議時會發生什麼? –

+0

當我遵循編譯器的意見,它給了我這個錯誤:無法將類型[[AnyObject]的值轉換爲預期的參數類型'[SKAction]' –

回答

1

代替

var actionArray:NSMutableArray = NSMutableArray() 

使用

var actionArray = [SKAction]() 

的ObjectiveC已更新,以支持泛型的NSArray和大部分框架已相應更新。

SKAction.sequence(NSArray)已在Swift中更改爲SKAction.sequence(Array<SKAction>),或者在ObjC中更改爲SKAction.sequence(NSArray<SKAction*>*)

+0

謝謝。我在哪裏可以找到所有這些變化? –

+0

好問題。有[WWDC視頻](https://developer.apple.com/videos/play/wwdc2015-401/),[Swift Blog](https://developer.apple.com/swift/blog/)和一般的API參考頁面。 –

+0

此外,XCode7中還有一個用於將項目轉換爲Swift2的遷移工具,該工具做得相當不錯。 –