私はList<Workout>
オブジェクトを並べ替える必要があります(たとえば、ユーザーがワークアウトを順不同で追加するなど)がありますが、新しい並べ替えを取得できないようですList<Workout>
存続する。私のコードは実行時に動作します(つまり、ソートされたビューに表示されます)が、ViewControllerを終了するかアプリを再起動すると何も表示されません。何もないのは、exercise.workoutDiary.removeAll()
が持続するためですが、明らかに、exercise.workoutDiary = sortedWorkoutDiary
へのその後の割り当ては維持されません。なぜどんなアイデア?リスト<T>オブジェクトが一貫してレルム内に永続しない
他のすべてはうまく動作します。典型的なrecordWorkout()
ケースは、何も順不同で入力されると仮定して動作します。したがって、ソートされたリストの上書きを除いて、ほとんどの場合、永続化が機能しています。
更新はここに起こる:
struct ExerciseDetailViewModel {
private let exercise: Exercise!
func recordWorkout(newWorkout: Workout) {
let lastWorkout = exercise.workoutDiary.last // grab the last workout for later comparison
let realm = try! Realm()
try! realm.write {
exercise.workoutDiary.append(newWorkout) // write the workout no matter what
}
if let secondToLastWorkout = lastWorkout { // only bother checking out of order if there is a last workout...
if newWorkout.date < secondToLastWorkout.date { // ...and now look to see if they are out of order
let sortedWorkoutDiary = exercise.sortedWorkouts
try! realm.write {
exercise.workoutDiary.removeAll()
exercise.workoutDiary = sortedWorkoutDiary
}
}
}
}
}
final class Exercise: Object {
var workoutDiary = List<Workout>()
var sortedWorkouts: List<Workout> {
return List(workoutDiary.sorted("date"))
}
}
final class Workout: Object {
dynamic var date = NSDate()
var sets = List<WorkSet>()
}
これは意味があります。 appendContentsOf(_ :)を使用するようにコードを変更しました。私はまた、結果のにsortedWorkoutsの計算されたプロパティタイプを切り替えることを試み、それは動作しませんでした。その場合は何も保存されません。タイプリストはまだ正常に動作します。 –
briancl