I want to do a NSFetchRequest
to display my data into a UICollectionView
:
import UIKit
import CoreData
let appDelegate: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let context: NSManagedObjectContext = appDelegate.managedObjectContext
class GarageViewController: UIViewController, UICollectionViewDelegate,UICollectionViewDataSource {
@IBOutlet weak var backgroundView: UIImageView!
@IBOutlet weak var collectionView: UICollectionView!
var voitures: [Voiture] = [Voiture]()
override func viewDidLoad() {
super.viewDidLoad()
collectionView.reloadData()
let fetchRequest = NSFetchRequest(entityName: "Voiture")
fetchRequest.resultType = .DictionaryResultType
do {
try voitures = context.executeFetchRequest(fetchRequest) as! [Voiture]
}
catch let fetchError as NSError {
print("VoitureFetch error: \(fetchError.localizedDescription)")
}
if (voitures.count > 0) {
for voiture in voitures as [Voiture] {
print(voiture.nom!)
}
}
else {
print("Aucune voiture")
}
}
When I run the code I get that error :
fatal error: NSArray element failed to match the Swift Array Element type
Thank's for your help !
Solution
var voitures: [NSManagedObject]? = [NSManagedObject]()
if (voitures!.count > 0) {
let voiture: NSManagedObject = voitures![indexPath.row]
print((voiture.valueForKey("nom") as? String))
}
来源:https://stackoverflow.com/questions/31304638/fetchrequest-nsarray-element-failed-to-match-the-swift-array-element-type-sw