2種目の合計で競う競技で、随時得点を追加して行くと、その時点での順位に並び替えるアプリを作成しています。
具体的に作成しているモデルは、
import Foundation import RealmSwift class Entry : Object { @objc dynamic var id: String = NSUUID().uuidString // primary key @objc dynamic var entryNumber : Int = 1 @objc dynamic var name : String let scores = List<Score>() var totalScore : Double { get { var s = 0.0 for i in 0..<scores.count { s += scores[i].scoreT } return s } } override static func primaryKey() -> String? { return "id" } } class Score : Object { @objc dynamic var shumokuName : String @objc dynamic var scoreA : Double = 0.0 @objc dynamic var scoreB : Double = 0.0 dynamic var scoreT : Double { get{ return scoreA + scoreB } } ~~let entries = List<Entry>()~~ ←削除 }
この時に、Entry (競技に参加者分存在)をtotalScoreの順にソートしたいのですが、
let entries = realm.objects(Entry.self).sorted(byKeyPath: "totalScore", ascending: false)
とやっても、**property 'Entry.totalScore' does not exist.'**とエラーになります。
やはり、EntryのtotalScoreを
@objc dynamic var totalScore : Double
と定義して、計算結果を都度データベースに保存しないといけないのでしょうか?
よろしくお願いします。
【補足】
Scoreは、種目名と、scoreA(技術点)、scoreB(芸術点)が基本要素にあり、scoreAとscoreBの合計(scoreT)がその種目の得点となります。
競技種目は5種類あって、大会(部門)によって、1種目(いわゆる種目別)から5種目の総合で争うケースが想定されます(小さな大会では2種目戦や3種目戦があります)。
そのためEntryのscoresはリストになっております。
あなたの回答
tips
プレビュー