在领域中存储值
Store values in realm
我正在创建一个健身日记应用程序,我将锻炼值存储在这个领域中:
我正在使用日期对锻炼进行排序。我想完成一些新的事情,我可以在同一个练习中使用不同的重量和重复次数。它基于这样的设计:
我认为数据库应该是这样的,但不确定:
- 23.11.2019
- Barbell Bench Press
- Set 1
- KG: 90
- Reps: 5
- Set 2
- KG: 87,5
- Reps: 6
- Triceps Pushdown
- Set 1
- KG: 110
- Reps: 6
- Set 2
- KG: 110
- Reps: 6
- Set 3
- KG: 112,5
- Reps: 5
关于如何执行此操作的任何提示?
编辑;
这是我当前的 Workout.swift
class(不确定如何编辑它以获得我想要的):
import Foundation
import RealmSwift
class Workout: Object {
@objc dynamic var date: Date?
@objc dynamic var name: String?
@objc dynamic var exercise: String?
@objc dynamic var sets = 0
@objc dynamic var reps = 0
@objc dynamic var kg: Double = 0.0
@objc dynamic var notes: String?
}
以这种方式创建锻炼
let realm = try! Realm()
var wo = WorkOut()//Do initialization for properties such as name,reps,...
try! realm.write{
realm.add(wo)
}
一条 WorkOut 记录已写入您的数据库
您将需要三个对象(锻炼、锻炼和设置)并具有 2 个多对多关系,如文档中所述:https://realm.io/docs/swift/latest/#many-to-many
class Workout: Object {
@objc dynamic var date: Date?
// List of exercises (to-many relationship)
var exercises = List<Exercise>()
}
.
class Exercise: Object {
@objc dynamic var name: String?
// List of sets (to-many relationship)
var sets = List<Set>()
var parentWorkout = LinkingObjects(fromType: Workout.self, property: "exercises")
}
.
class Set: Object {
@objc dynamic var reps: Int = 0
@objc dynamic var kg: Double = 0.0
@objc dynamic var notes: String?
// Define an inverse relationship to be able to access your parent workout for a particular set (if needed)
var parentExercise = LinkingObjects(fromType: Exercise.self, property: "sets")
convenience init(numReps: Int, weight: Double, aNote: String) {
self.init()
self.reps = numReps
self.kg = weight
self.notes = aNote
}
}
编辑
添加示例代码
let aSet0 = Set(numReps: 10, weight: 5.0, aNote: "light workout")
let aSet1 = Set(numReps: 10, weight: 20.0, aNote: "medium workout")
let aSet2 = Set(numReps: 10, weight: 30.0, aNote: "heavy workout")
let aWorkout = Workout()
aWorkout.name = example
aWorkout.sets.append(objectsIn: [aSet0, aSet1, aSet2] )
显示 "Bench Press" 锻炼组的另一个示例代码:
// Find the Workout instance "Bench Press"
let benchPressWorkout = realm.objects(Workout.self).filter("name = 'Bench Press'")
// Access the sets for that instance
let sets = benchPressWorkout.sets
// Access set[0]
let set0 = sets[0]
// Access reps and kg for set 0
let reps0 = set0.reps
let kg0 = set0.kg
// and so on ...
我正在创建一个健身日记应用程序,我将锻炼值存储在这个领域中:
我正在使用日期对锻炼进行排序。我想完成一些新的事情,我可以在同一个练习中使用不同的重量和重复次数。它基于这样的设计:
我认为数据库应该是这样的,但不确定:
- 23.11.2019
- Barbell Bench Press
- Set 1
- KG: 90
- Reps: 5
- Set 2
- KG: 87,5
- Reps: 6
- Triceps Pushdown
- Set 1
- KG: 110
- Reps: 6
- Set 2
- KG: 110
- Reps: 6
- Set 3
- KG: 112,5
- Reps: 5
关于如何执行此操作的任何提示?
编辑;
这是我当前的 Workout.swift
class(不确定如何编辑它以获得我想要的):
import Foundation
import RealmSwift
class Workout: Object {
@objc dynamic var date: Date?
@objc dynamic var name: String?
@objc dynamic var exercise: String?
@objc dynamic var sets = 0
@objc dynamic var reps = 0
@objc dynamic var kg: Double = 0.0
@objc dynamic var notes: String?
}
以这种方式创建锻炼
let realm = try! Realm()
var wo = WorkOut()//Do initialization for properties such as name,reps,...
try! realm.write{
realm.add(wo)
}
一条 WorkOut 记录已写入您的数据库
您将需要三个对象(锻炼、锻炼和设置)并具有 2 个多对多关系,如文档中所述:https://realm.io/docs/swift/latest/#many-to-many
class Workout: Object {
@objc dynamic var date: Date?
// List of exercises (to-many relationship)
var exercises = List<Exercise>()
}
.
class Exercise: Object {
@objc dynamic var name: String?
// List of sets (to-many relationship)
var sets = List<Set>()
var parentWorkout = LinkingObjects(fromType: Workout.self, property: "exercises")
}
.
class Set: Object {
@objc dynamic var reps: Int = 0
@objc dynamic var kg: Double = 0.0
@objc dynamic var notes: String?
// Define an inverse relationship to be able to access your parent workout for a particular set (if needed)
var parentExercise = LinkingObjects(fromType: Exercise.self, property: "sets")
convenience init(numReps: Int, weight: Double, aNote: String) {
self.init()
self.reps = numReps
self.kg = weight
self.notes = aNote
}
}
编辑
添加示例代码
let aSet0 = Set(numReps: 10, weight: 5.0, aNote: "light workout")
let aSet1 = Set(numReps: 10, weight: 20.0, aNote: "medium workout")
let aSet2 = Set(numReps: 10, weight: 30.0, aNote: "heavy workout")
let aWorkout = Workout()
aWorkout.name = example
aWorkout.sets.append(objectsIn: [aSet0, aSet1, aSet2] )
显示 "Bench Press" 锻炼组的另一个示例代码:
// Find the Workout instance "Bench Press"
let benchPressWorkout = realm.objects(Workout.self).filter("name = 'Bench Press'")
// Access the sets for that instance
let sets = benchPressWorkout.sets
// Access set[0]
let set0 = sets[0]
// Access reps and kg for set 0
let reps0 = set0.reps
let kg0 = set0.kg
// and so on ...