我有以下實體和關係如何通過關係設置實體屬性?
我希望能夠設置一個運動有它的例程名關係的零結果,如果是有道理的?以便在日常實體形成時可以將其設置爲例程名稱。
我的問題是,你如何設置這種屬性?我想下面的代碼,但它會導致嚴重的崩潰:
userExercise.usersroutine?.name = nil
我的邏輯是,我走鍛鍊,並按照名稱屬性之間的關係,並將其設置爲nil?
感謝您的任何修正和澄清我的邏輯
編輯:添加我現有的鍛鍊和日常保存功能
func createExercise() {
guard let managedObjectContext = managedObjectContext else { return }
if let userExercise = userExercise {
userExercise.name = userExerciseName.text
userExercise.sets = Int64(userSetsCount)
userExercise.reps = Int64(userRepsCount)
userExercise.weight = Double(self.userExerciseWeight.text!)!
userExercise.id = UUID().uuidString
userExercise.routine = nil
}
do {
try managedObjectContext.save()
} catch {
fatalError("Failure to save context: \(error)")
}
}
例程創建:
func createRoutine() {
guard let managedObjectContext = managedObjectContext else { return }
let userRoutine = UserRoutine(context: managedObjectContext)
userRoutine.name = workoutNameTextfield.text
do {
try managedObjectContext.save()
} catch {
fatalError("Failure to save context: \(error)")
}
}
當前獲取請求:
fileprivate lazy var fetchedResultsController: NSFetchedResultsController<UserExercise> = {
let fetchRequest: NSFetchRequest<UserExercise> = UserExercise.fetchRequest()
fetchRequest.sortDescriptors = [NSSortDescriptor(key: "id", ascending: true)]
let fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: self.persistentContainer.viewContext, sectionNameKeyPath: nil, cacheName: nil)
fetchedResultsController.delegate = self
return fetchedResultsController
這是因爲你的usersroutine值本身是零和你正在試圖建立在它之上的名字。說得通?首先嚐試爲例程賦值,然後如果需要將名稱設置爲零。 –
我明白,那麼正確的方法是什麼?簡單地使用userExercise.usersroutine = nil直到我有要設置的名稱? – infernouk
你能否解釋一下你想在Routine和Exercise之間建立什麼樣的關係,以便我更好地理解你的問題並給出一個可行的解決方案。 –