Задача
Мне нужно сохранить List в Realm, который состоит из свойств массива объектов Struct (который был передан через Segue и заполняет табличное представление). Это в форме «имени упражнения» и «количества повторений» в каждой строке.
Что я пробовал?
Я сопоставил объект области со структурой в терминах полей и формата и попытался сохранить массив в виде списка, например, "= List ", но это не работает ("использование необъявленного типа"). Я также пробовал различные способы сохранить свойства каждой строки таблицы, но опять же не смог заставить это работать (например, = cell.workoutname)
Исследования Я нашел это Как сохранить структуру в царство в swift? однако, это не для сохранения массивов объектов, я не думаю. Однако это сделал (первый ответ), что дало мне идею потенциально сохранить значения, содержащиеся в каждой строке, в Realm вместо фактического массива Struct. Я также нашел это Сохранение массива в Realm в Swift? , но я думаю, что это для случая, когда массив уже состоит из объектов Realm, а не экземпляров Struct, как в моем случае.
Код и детали
1024 * Структуры *
У меня есть структура, как показано ниже. Другая структура (Workout Generator) имеет функцию, которая генерирует x количество экземпляров этих объектов. Затем они передаются через Segue новому VC TableView (каждая строка отображает имя тренировки и количество повторений):
struct WorkoutExercise : Hashable, Equatable{
let name : String
let reps : Int
var hashValue: Int {
return name.hashValue
}
static func == (lhs: WorkoutExercise, rhs: WorkoutExercise) -> Bool {
return lhs.name == rhs.name
}
}
У меня тогда есть следующие Объекты Царства. Один из них для сохранения «WorkoutSession». Он будет содержать список областей объектов области WorkoutExercise.
class WorkoutSessionObject: Object {
@objc dynamic var workoutID = UUID().uuidString
@objc dynamic var workoutName = ""
let exercises = List<WorkoutExerciseObject>()
var totalExerciseCount: Int {
return exercises.count
}
}
class WorkoutExerciseObject: Object {
@objc dynamic var name = ""
@objc dynamic var reps = 0
}
Я пробовал следующий код при попытке сохранить сведения о тренировке в области:
func saveToRealm() {
let workoutData = WorkoutSessionObject()
workoutData.workoutName = "test"
workoutData.workoutID = UUID().uuidString
workoutData.exercises = List<selectedWorkoutExerciseArray>
}
Что я думаю Мне нужно сделать, прочитав другие ответы
Опция 1 - вместо того, чтобы пытаться сохранить фактический массив, вместо этого сохраняйте 'name' и 'reps' из каждой строки таблицы?
Вариант 2 - каким-то образом преобразовать selectedWorkoutExerciseArray в список объектов области?
конечно, могут быть другие варианты! Любая помощь / идеи приветствуются!