Я отправлю код, а затем объясню, что мне нужно.Основные данные. Назначьте значения в отношениях один-ко-многим.
две модели:
import Foundation
import CoreData
class TrainingDay: NSManagedObject {
@NSManaged var day: String
@NSManaged var trainingDetails: NSSet
}
и
import Foundation
import CoreData
class TrainingDetails: NSManagedObject {
@NSManaged var exerciseName: String
@NSManaged var repsNumber: String
@NSManaged var setsNumber: String
@NSManaged var trainingDay: TrainingDay
}
ОК, теперь у меня есть эти методы здесь:
func appendTrainingDay() {
let dayLabel = dayName.text
let dayEntity = NSEntityDescription.entityForName("TrainingDay", inManagedObjectContext: moc!)
let newTrainingDay = TrainingDay(entity: dayEntity!, insertIntoManagedObjectContext: moc)
newTrainingDay.day = dayName.text
var error: NSError?
moc?.save(&error)
if let err = error {
var status = err.localizedFailureReason
println("\(status)")
} else {
println("Training day:\(dayName.text)")
}
}
и
func appendTrainingDetailsToArray() {
let nameLabel = exerciseName.text
namesArray.append(nameLabel)
let numberOfSets = setsNumber.text?.toInt()
setsArray.append(numberOfSets!)
let numberOfReps = repsNumber.text?.toInt()
repsArray.append(numberOfReps!)
let detailsEntity = NSEntityDescription.entityForName("TrainingDetails", inManagedObjectContext: moc!)
let trainingdetails = TrainingDetails(entity: detailsEntity!, insertIntoManagedObjectContext: moc)
trainingdetails.exerciseName = exerciseName.text
trainingdetails.setsNumber = setsNumber.text!
trainingdetails.repsNumber = repsNumber.text!
var error: NSError?
moc?.save(&error)
if let err = error {
var status = err.localizedFailureReason
println("\(status)")
} else {
println("Training day:\(trainingdetails)")
println("Exercise: #\(exerciseName.text) saved successfully!")
println("Number of sets: #\(setsNumber.text) saved successfully!")
println("Number of reps: #\(repsNumber.text) saved successfully!")
}
}
И они срабатывают здесь:
@IBAction func fixDayButton(sender: AnyObject) {
appendTrainingDay()
}
@IBAction func doneButton(sender: AnyObject) {
appendTrainingDetailsToArray()
exerciseTableView.reloadData()
}
С этим сделано, что он должен был сделать, это: пользователь напечатает в день, как «понедельник», сохраните его в основных данных, и для этого конкретного дня , пользователь добавит много подробных объектов по своему усмотрению, которые будут заполнять tableView. Каждый из этих объектов содержит 3 атрибута: «exerciseName», «repsNumber» и «setsNumber». Кажется, что это происходит, вместо того, чтобы создать, например, один «покойный» объект и добавить много деталей к этому уже существующему, я создаю много «понедельников» и для каждого «понедельника», я создаю один подробный объект.
Как это исправить? Как я могу, внутри метода, который сохранит данные в основных данных, сделать выборку для этого конкретного дня, который я хочу, и заполнить его как можно большим количеством объектов?
-> Я уже установил отношения «один ко многим» и обратный между ними.
-> Я не знаю, как сделать правильный запрос выборки с предикатами, соответствующими тому, что я хочу найти.
-> Я новичок в Swift и имею небольшой опыт работы с C++.
Если кто-то может объяснить мне, как это сделать с примерами, я был бы очень, очень благодарен.
Но где его установить? Прямо ниже trainingdetails.repsNumber = repsNumber.text! линия? Если да, то как мне восстановить день, в который будут назначены эти атрибуты? –
@NicholasPiccoli см. Мой обновленный ответ –