peg101
peg101

Reputation: 23

Why have a Array Empty and Error in swift4?

I've spent a few hours trying to get a fetch to work in my film sheet. I need to open film's View of my colectionview Items. I could follow different guide and post but it always give me an empty array. I'm newbie, sorry for my question but I need your help.

Here's my code:

var taskArrayScheda : NewFilm?

override func viewDidLoad() {
super.viewDidLoad()

self.fetchData()

if(self.taskArrayScheda != nil) {

let schedaOk = taskArrayScheda
mostraDatiNellaScheda(schedaOk!)

} else { print("errore array vuoto") }


}

func mostraDatiNellaScheda(_ sched:NewFilm) {

// get title
titoloScheda.text = sched.titolo
}

func fetchData() {
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext


let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "NewFilm")

do {
taskArrayScheda = try context.fetch(NewAnime.fetchRequest())
💥ERROR ::::: Cannot assign value of type '[Any]' to type 'NewFilm?'

} catch {
print(error)
}
}    

Upvotes: 1

Views: 47

Answers (1)

meaning-matters
meaning-matters

Reputation: 22946

The fetch() returns an array. But currently you assign the fetch() result to the single object var taskArrayScheda.

You'll need something like:

var taskArrayScheda: [NewFilm]?

Then you should do:

taskArrayScheda = try context.fetch(NewAnime.fetchRequest()) as? [NewFilm]

I assume here that NewAnime is a subclass of NewFilm, which seems to make sense looking at these two class names.

Upvotes: 1

Related Questions