У меня есть сущность в основных данных, представляющая модель тренировки. Каждый объект имеет атрибут DayID, который представляет, в какой день элемент попадает, как показано на изображении.Выбор определенных элементов из основных данных
код для создания и сохранения определенного элемента будет показано ниже в Swift
@IBAction func doneButtonPressed(sender: AnyObject) {
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let managedObjectContextCreation = appDelegate.managedObjectContext
let entityDescription = NSEntityDescription.entityForName("ExerciseItemModel", inManagedObjectContext: managedObjectContextCreation)
//Sunday
let exerciseItemtoAdd = ExerciseItemModel(entity: entityDescription!, insertIntoManagedObjectContext: managedObjectContextCreation)
exerciseItemtoAdd.dayID = dayName //DayName could be Wednesday
exerciseItemtoAdd.exerciseType = "Cardio"
exerciseItemtoAdd.exerciseName = self.exerciseNameTextField.text!
exerciseItemtoAdd.durationOrSets = durationLabelTextArea.text!
exerciseItemtoAdd.distanceOrReps = distanceLabelTextArea.text!
exerciseItemtoAdd.weight = ""
exerciseItemtoAdd.date = currentDate
appDelegate.saveContext() //Save the elements I just created.
let request: NSFetchRequest = NSFetchRequest(entityName: "ExerciseItemModel")
do {
_ = try managedObjectContextCreation.executeFetchRequest(request)
// success ...
} catch let error as NSError {
// failure
print("Fetch failed: \(error.localizedDescription)")
}
self.dismissViewControllerAnimated(true, completion: nil)
}
я могу получить элементы, специфичные для дня, например, Среда в cellForRowAtIndexPath, используя следующий код:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let exerciseItem = fetchedResultController.objectAtIndexPath(indexPath) as! ExerciseItemModel
//Check if the DayID is the same as a specific WeekDay e.g. Wednesday
if exerciseItem.dayID == self.weekDayModel.dayName {
//All the code here
}
return Cell!
}
Проблема Я, следовательно, перед как мне определить numbeOfRows в функции секции для только возвращает количество элементов, имеющих отношение к конкретному DAYNAME. например. Я хочу только количество предметов, чей DayID - среда. В настоящий момент функция возвращает все объекты, включая те, у которых есть другие dayID с воскресенья по субботу, и, следовательно, искажает TableView.
Вот моя numberOfRowsInSection функция:
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
//let exerciseItem = fetchedResultController.
//if exerciseItem.dayID == self.weekDayModel.dayName {
//}
numberOfExerciseItems = fetchedResultController.sections![section].numberOfObjects
return fetchedResultController.sections![section].numberOfObjects
}
Любые мысли или помощь очень ценится. :)
Вы, наверное, хотели бы иметь NSPredicate экран данные. – Allen
Любая идея о том, как это выполнить. Я довольно новичок в NSPredicate. Я делаю свое исследование на стороне, чтобы выяснить, как это сделать. @Allen – Gugulethu