コードを投稿して、必要なものを説明します。
2つのモデル:
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
}
OK、今ここにこれらのメソッドがあります:
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。これらの各オブジェクトには、「exerciseName」、「repsNumber」、「setsNumber」の3つの属性が含まれています。たとえば、単一の「月曜日」オブジェクトを作成し、この既存のオブジェクトに多くの詳細オブジェクトを追加する代わりに、多くの「月曜日」を作成し、「月曜日」ごとに1つの詳細オブジェクトを作成します。
どうすればこれを修正できますか?コアデータに詳細を保存するメソッド内で、必要な特定の日のフェッチを作成し、必要な数のオブジェクトを入力するにはどうすればよいですか?
->私はすでに1対多の関係を設定し、それらの間で逆にしています。
->検索したいものに一致する述語を使用して適切なフェッチ要求を行う方法がわかりません。
->私はSwiftを初めて使用し、C ++の経験はほとんどありません。
誰かが例を挙げてこれを行う方法を私に説明できれば、私は非常に、非常に感謝するでしょう。
trainingdetails.trainingDay
関係を設定します。私が何かを逃したのでない限り、あなたはこの関係をどこにも設定しませんでした。
編集:
このようなもの:
trainingdetails.trainingDay = selectedTrainingDay
アクセスするにtrainingdetails
は、Core Dataからその日を取得し、次のようにします。
foreach( TrainingDetails trainingDetails in selectedTrainingDay.trainingDetails) {
// Do stuff with the trainingDetails
}
UIとワークフローをよく理解していないので、ここで推測しています。通常、この種のものには2つのUITableViewがあります。1つは日を一覧表示し、1つを選択すると、trainingDetailsの日を一覧表示する別のUITableViewに移動します。あなたの場合、あなたはカレンダービューを持っていると思います。カレンダービューから日を選択すると、選択した日のtrainingDetailsのリストが表示されます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加