Написать в Царство в цикле - PullRequest
0 голосов
/ 17 февраля 2019

Я храню информацию о тренировках в 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, но затем она вылетала.Каждый из массивов содержит одинаковое количество объектов.Есть идеи?

1 Ответ

0 голосов
/ 17 февраля 2019

Вы можете попробовать этот код:

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 один раз, если это возможно, для оптимизации производительности.Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...