animationImagesにUIImageの配列をセットしようとすると「cannnot assign a value of type '[UIImage?]'」とエラーが出る


アニメーションをさせるために以下のようにコードを書いたのですが、`fireImageView.animationImages =
animationSeq`の行で「`cannnot assign a value of type '[UIImage]?' to a value of
type '[Anyobject]?'`」とエラーが出てしまいます。  
これは型が違うから代入ができないということでしょうか？そうであればキャストを行えばよろしいですか？しかしキャストを試みても方法がよくないのかうまくいきません......。  
どなたか分かる方がいれば教えていただきたいです。  
よろしくお願いします。

[code]

    @IBOutlet weak var fireImageView: UIImageView!
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            var animationSeq = [
                UIImage(named: "fire001.png"),
                UIImage(named: "fire002.png"),
                UIImage(named: "fire003.png"),
                UIImage(named: "fire004.png"),
                UIImage(named: "fire005.png"),
                UIImage(named: "fire006.png"),
                UIImage(named: "fire007.png"),
                UIImage(named: "fire008.png"),
                UIImage(named: "fire009.png"),
                UIImage(named: "fire010.png"),
                UIImage(named: "fire011.png"),
                UIImage(named: "fire012.png"),
                UIImage(named: "fire013.png"),
                UIImage(named: "fire014.png"),
                UIImage(named: "fire015.png")
            ]
            fireImageView.animationImages = animationSeq
            fireImageView.animationDuration = 0.2
            fireImageView.animationRepeatCount = 0
        }
    
[/code]




> cannnot assign a value of type '[UIImage]?' to a value of type
> '[Anyobject]?'

これはエラーメッセージの書き写し間違いですね？正しくはこうでしょう？Xcodeでじっさいプロジェクトを作って、確認しました。

> cannnot assign a value of type '[UIImage?]' to a value of type
> '[Anyobject]?'

正しいほうなら、比較してなにが異なるのか理解が容易になります。  
Optional型インスタンスを要素とする配列は、非Optional型インスタンスを要素とする配列と定められた場所に配置できない。そうエラーメッセージを解釈できます。

[code]

    var animationSeq = [
            UIImage(named: "fire001.png"),
            UIImage(named: "fire002.png"),
            UIImage(named: "fire003.png"),
            UIImage(named: "fire004.png"),
            UIImage(named: "fire005.png"),
            UIImage(named: "fire006.png"),
            UIImage(named: "fire007.png"),
            UIImage(named: "fire008.png"),
            UIImage(named: "fire009.png"),
            UIImage(named: "fire010.png"),
            UIImage(named: "fire011.png"),
            UIImage(named: "fire012.png"),
            UIImage(named: "fire013.png"),
            UIImage(named: "fire014.png"),
            UIImage(named: "fire015.png")
        ]
    
[/code]

これを

[code]

    var animationSeq = [
            UIImage(named: "fire001.png")!,
            UIImage(named: "fire002.png")!,
            UIImage(named: "fire003.png")!,
            UIImage(named: "fire004.png")!,
            UIImage(named: "fire005.png")!,
            UIImage(named: "fire006.png")!,
            UIImage(named: "fire007.png")!,
            UIImage(named: "fire008.png")!,
            UIImage(named: "fire009.png")!,
            UIImage(named: "fire010.png")!,
            UIImage(named: "fire011.png")!,
            UIImage(named: "fire012.png")!,
            UIImage(named: "fire013.png")!,
            UIImage(named: "fire014.png")!,
            UIImage(named: "fire015.png")!
        ]
    
[/code]

こう変更すれば、エラーは消えます。`UIImage`のクラスリファレンスを調べれば、イニシアライザは`init?(named image:
String)`という形になっていることがわかります。つまりそのままではOptional型です。「!」で強制Unwrapして、対応します。




> cannnot assign a value of type '[UIImage]?' to a value of type
> '[Anyobject]?'

これはエラーメッセージの書き写し間違いですね？正しくはこうでしょう？Xcodeでじっさいプロジェクトを作って、確認しました。

> cannnot assign a value of type '[UIImage?]' to a value of type
> '[Anyobject]?'

正しいほうなら、比較してなにが異なるのか理解が容易になります。  
Optional型インスタンスを要素とする配列は、非Optional型インスタンスを要素とする配列と定められた場所に配置できない。そうエラーメッセージを解釈できます。

[code]

    var animationSeq = [
            UIImage(named: "fire001.png"),
            UIImage(named: "fire002.png"),
            UIImage(named: "fire003.png"),
            UIImage(named: "fire004.png"),
            UIImage(named: "fire005.png"),
            UIImage(named: "fire006.png"),
            UIImage(named: "fire007.png"),
            UIImage(named: "fire008.png"),
            UIImage(named: "fire009.png"),
            UIImage(named: "fire010.png"),
            UIImage(named: "fire011.png"),
            UIImage(named: "fire012.png"),
            UIImage(named: "fire013.png"),
            UIImage(named: "fire014.png"),
            UIImage(named: "fire015.png")
        ]
    
[/code]

これを

[code]

    var animationSeq = [
            UIImage(named: "fire001.png")!,
            UIImage(named: "fire002.png")!,
            UIImage(named: "fire003.png")!,
            UIImage(named: "fire004.png")!,
            UIImage(named: "fire005.png")!,
            UIImage(named: "fire006.png")!,
            UIImage(named: "fire007.png")!,
            UIImage(named: "fire008.png")!,
            UIImage(named: "fire009.png")!,
            UIImage(named: "fire010.png")!,
            UIImage(named: "fire011.png")!,
            UIImage(named: "fire012.png")!,
            UIImage(named: "fire013.png")!,
            UIImage(named: "fire014.png")!,
            UIImage(named: "fire015.png")!
        ]
    
[/code]

こう変更すれば、エラーは消えます。`UIImage`のクラスリファレンスを調べれば、イニシアライザは`init?(named image:
String)`という形になっていることがわかります。つまりそのままではOptional型です。「!」で強制Unwrapして、対応します。

