[英]Write to Realm in a loop
I am storing workout information in Realm from this object class: 我正在通过此对象类在Realm中存储锻炼信息:
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?
}
I have data stored as an array, that I want to write to Realm, like this: 我将要存储的数据存储为数组,要写入Realm,如下所示:
var workoutName = ""
var exercises = [String]()
var sets = [Int]()
var reps = [Int]()
var kg = [Double]()
var notes = [String]()
@IBAction func saveWorkoutButton(_ sender: Any) {
let realm = try! Realm()
print(Realm.Configuration.defaultConfiguration.fileURL!)
let currenDate = Date() // Get the current date
let myWorkout = Workout()
myWorkout.date = currenDate
myWorkout.name = workoutName
for i in 0 ..< exercises.count {
myWorkout.exercise = exercises[i]
myWorkout.sets = sets[i]
myWorkout.reps = reps[i]
myWorkout.kg = kg[i]
myWorkout.notes = notes[i]
realm.add(myWorkout)
}
try! realm.write {
realm.add(myWorkout)
}
}
The problem in this case is that when running the realm.write ...
it only adds the last value from the for i in 0
function. 在这种情况下的问题是,在运行
realm.write ...
它仅将for i in 0
函数中的最后一个值相加。 I tried putting the realm.write
function inside of the for i in 0
loop, but then it crashes. 我尝试将
realm.write
函数放入for i in 0
循环中的for i in 0
,但随后崩溃。 Each of the arrays contains equal numbers of objects. 每个数组包含相等数量的对象。 Any ideas?
有任何想法吗?
You can try this code: 您可以尝试以下代码:
var myWorkouts:[Workout] = []
for i in 0 ..< exercises.count {
let myWorkout = Workout()
myWorkout.date = currenDate
myWorkout.name = workoutName
myWorkout.exercise = exercises[i]
myWorkout.sets = sets[i]
myWorkout.reps = reps[i]
myWorkout.kg = kg[i]
myWorkout.notes = notes[i]
myWorkouts.append(myWorkout)
}
try! realm.write {
realm.add(myWorkouts)
}
You should only add
and write
once if possible for performance optimisation. 如果可能的话,您只能
add
和write
一次,以优化性能。 Hope this helps. 希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.