【发布时间】:2015-08-19 03:21:04
【问题描述】:
我会发布一些代码,然后解释我需要什么。
两种型号:
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++ 的经验只有一点点。
如果有人可以通过示例向我解释如何做到这一点,我将非常非常感谢。
【问题讨论】:
标签: ios swift core-data relationship nsfetchrequest