2017-02-06 12 views
0

У меня возникли трудности с получением результатов CoreData после реализации Predicate. Реализация только приводит к 1 fetchedObject, и я не знаю, почему.Реализация предикатов, но в результате чего 1 fetchedObject

class PhotoAlbumViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate, MKMapViewDelegate { 

var pin: Pin! 

lazy var context: NSManagedObjectContext = { 
     let appDelegate = UIApplication.shared.delegate as! AppDelegate 
     return appDelegate.stack!.context 
    }() 

lazy var fetchedResultsController: NSFetchedResultsController<NSFetchRequestResult> = { 
     let fetchedRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Photo") 
     fetchedRequest.sortDescriptors = [] 
     fetchedRequest.predicate = NSPredicate(format: "pins == %@", argumentArray: [self.pin]) 
     return NSFetchedResultsController(fetchRequest: fetchedRequest, managedObjectContext: self.context, sectionNameKeyPath: nil, cacheName: nil) 
    }() 

override func viewWillAppear(_ animated: Bool) { 

    super.viewWillAppear(animated) 

    do { 
     try fetchedResultsController.performFetch() 

    } catch let error as NSError { 
     print("Unable to perform fetch: \(error.localizedDescription)") 
    } 

    let fetchedObjects = fetchedResultsController.fetchedObjects 
    print(fetchedObjects.count) //returns 1 only 

} 

Как субъект фотографии, так и Pin имеют отношения друг с другом.

Любой совет здесь очень ценится, спасибо!

+0

Вам понадобится сортировка дескрипторов, рекомендованная Apple. – Mannopson

+1

Я подозреваю, что только один объект соответствует предикату. – shallowThought

+0

Зачем вам нужен предикат? – Mannopson

ответ

0

Отношения к фотографиям должны были быть отношениями «один ко многим». Я пропустил эту часть, когда я настраивал модели, устанавливая ее как отношения «один к одному». После внесения изменений в новую версию модели она работала правильно.

 Смежные вопросы

  • Нет связанных вопросов^_^