ios - 循环写入领域
问题描述
我将这个对象类的锻炼信息存储在 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?
}
我将数据存储为一个数组,我想将其写入 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)
}
}
这种情况下的问题是,在运行realm.write ...
时它只添加for i in 0
函数的最后一个值。我尝试将realm.write
函数放入for i in 0
循环中,但随后它崩溃了。每个数组都包含相等数量的对象。有任何想法吗?
解决方案
你可以试试这段代码:
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)
}
如果可能,您应该只add
进行write
一次性能优化。希望这可以帮助。
推荐阅读
- python - 运行 Apache Phoenix 命令时出现 Python 兼容性问题
- django - 使用 csv 在相关模型上批量创建
- pascal - FreePascal - 如何从一个位置复制文件并将其粘贴到另一个位置?
- node.js - ExpressJS + PassportJS + passport-google-oauth `req.isAuthenticated()` 登录后立即返回 false
- angularjs - 如何使用 AngularJS 根据列表中的值显示控件?
- python-3.x - Python将货币字符串拆分为货币代码和金额
- python - 用熊猫数据框中的最后一个非空值替换空值
- c# - 如何最大化excel工作表列限制?
- blazor - 更改环境后,Blazor 中不会自动生成作用域 CSS
- python - 脚本正在生成重复输出