Предикат не работает в CoreData - Swift 4 - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь загрузить имя с индексом 1, но он не работает (CollectionView пуст).

CoreData :

enter image description here

LoadData:

guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else { return }

let managedContext = appDelegate.persistentContainer.viewContext
let fetchRequestTag = NSFetchRequest<NSManagedObject>(entityName: "Tag")
let PreValue = 1
let predicate = NSPredicate(format: "index == %i", PreValue)
fetchRequestTag.predicate = predicate

do {
   tagItems = try managedContext.fetch(fetchRequestTag)
} catch let error as NSError {
   print("Could not fetch. \(error), \(error.userInfo)")
}

TagCollectionView.reloadData()
TagCollectionView.selectItem(at: NSIndexPath(item: 0, section: 0) as IndexPath, animated: false, scrollPosition: [])

for data in tagItems {
   print("\(data.value(forKey: "name") as! String as Any), \(NSKeyedUnarchiver.unarchiveObject(with: data.value(forKeyPath: "index") as! Data) as! Int)")
}

1 Ответ

0 голосов
/ 25 февраля 2019

Тип атрибута и тип предиката не совпадают.

Transformable как тип для index в любом случае бессмысленен.Установите тип атрибута на Int32 или, если есть только индексы 0 и 1, даже на Bool.

...