Swft エラー cannot assign~ from[??] to ??

基本、詰め込み先が、配列になっていないというエラー

エラーメッセージ Cannot assign value of type 'NSSortDescriptor' to type '[NSSortDescriptor]?'

これはNSSortDescriptorを配列のNSSortDescriptorに詰め込んでいますよというエラー

var coredataPlans: Plans?



coredataPlans = try context.fetch(fetchRequest)

//==error
Cannot assign value of type '[Plans]' to type 'Plans?'

配列にしなくては行けないときは、要素数が1の配列にする。

fetchの結果は常に配列

それを、配列でないものに詰め込んでいますよというエラー。

解決方法

var coredataPlans: [Plans]?

エラーその2

  let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Plans")
        do{
            //fetch
             coredataPlans = try context.fetch(fetchRequest)

//==error
Cannot assign value of type '[Any]' to type '[Plans]?'

にしているとAny型で帰ってくる。

これはフェッチの結果がany型になっているのをPlans型にしようとしている。

解決方法

ジェネリクスを用いる。

そのクラスの持っている型で利用して作りますよということ。 結果がPlans型になっているので、汎用的に利用しやすい。

  let fetchRequest = NSFetchRequest<Plans>(entityName: "Plans")

ジェネリクスとは汎用化

型を呼び出し元から決めてあげることにより、柔軟な設計が可能。 このクラスを継承していれば、受け入れますよという感じ。