Advertisement
Guest User

Untitled

a guest
Sep 8th, 2017
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.56 KB | None | 0 0
  1. //
  2. // LocalDB.swift
  3. // PsychoPath
  4. //
  5. // Created by Oling Cat on 2017/7/14.
  6. // Copyright © 2017年 Oling Cat. All rights reserved.
  7. //
  8.  
  9. import RealmSwift
  10.  
  11. //protocol ItemPresentable {
  12. // var orderNum: String { get set }
  13. // var quiz: String { get set }
  14. // var options: [String] { get set }
  15. // var range: Int { get set }
  16. // var isReverse: Bool { get set }
  17. // var forGender: String { get set }
  18. //}
  19. //
  20. //protocol QuestPresentable {
  21. // var code: String { get set }
  22. // var title: String { get set }
  23. // var intro: String { get set }
  24. // var role: String { get set }
  25. // var age: Int { get set }
  26. // var base: Int { get set }
  27. // var result: Data { get set }
  28. //
  29. // associatedtype Item: Object, ItemPresentable
  30. // var items: List<Item> { get set }
  31. //}
  32.  
  33. // 使 Realm 支持数组
  34. class RLMString: Object {
  35. dynamic var raw = ""
  36. }
  37. class RLMFloat: Object {
  38. dynamic var raw: Float = 0.0
  39. }
  40.  
  41. // 问题
  42. class Quizz: Object {
  43. dynamic var id: Int = 0
  44. dynamic var order: String = ""
  45. dynamic var title: String = ""
  46. var options: [String] {
  47. get {
  48. return _options.map { $0.raw }
  49. }
  50. set {
  51. _options.removeAll()
  52. _options.append(objectsIn: newValue.map({ RLMString(value: [$0]) }))
  53. }
  54. }
  55. let _options = List<RLMString>()
  56. dynamic var range: Int = 0
  57. dynamic var isReverse: Bool = false // 是否反向记分
  58. dynamic var hasExtra: Bool = false // 是含有附加问题
  59. dynamic var forGender: String = ""
  60.  
  61. override static func primaryKey() -> String? {
  62. return "id"
  63. }
  64.  
  65. override static func ignoredProperties() -> [String] {
  66. return ["options"]
  67. }
  68. }
  69.  
  70. extension Quizz {
  71. override var description: String {
  72. return "\norder= \(self.order)\ntitle= \(self.title)"
  73. }
  74. }
  75.  
  76. // 量表
  77. class Questionnaire: Object {
  78. dynamic var id: Int = 0
  79. dynamic var code: String = ""
  80. dynamic var title: String = ""
  81. dynamic var summary: String = ""
  82. dynamic var intro: String = ""
  83. dynamic var role: String = "normal"
  84. dynamic var age: Int = 18
  85. dynamic var base: Int = 0
  86. dynamic var weight: Int = 0 // 量表权重
  87. dynamic var result: Data?
  88. let items = List<Quizz>()
  89.  
  90. override static func primaryKey() -> String? {
  91. return "id"
  92. }
  93. }
  94.  
  95. class Category: Object {
  96. dynamic var id: Int = 0
  97. dynamic var title: String = ""
  98. dynamic var summary: String = ""
  99. let questionnaires = List<Questionnaire>()
  100.  
  101. override static func primaryKey() -> String? {
  102. return "id"
  103. }
  104. }
  105.  
  106. class Result: Object {
  107. dynamic var id: Int = 0
  108. let _partScores = List<RLMFloat>() // 各项分数,scores[0] 为总分
  109. dynamic var totalScore: Float = 0.0 // 总分,total = scores[0]
  110. let _explainations = List<RLMString>()
  111. let _suggestions = List<RLMString>()
  112.  
  113. var partScores: [Float] {
  114. get {
  115. return _partScores.map { $0.raw }
  116. }
  117. set {
  118. _partScores.removeAll()
  119. _partScores.append(objectsIn: newValue.map({ RLMFloat(value: [$0]) }))
  120. }
  121. }
  122.  
  123. var explainations: [String] {
  124. get {
  125. return _explainations.map { $0.raw }
  126. }
  127. set {
  128. _explainations.removeAll()
  129. _explainations.append(objectsIn: newValue.map({ RLMString(value: [$0]) }))
  130. }
  131. }
  132.  
  133. var suggestions: [String] {
  134. get {
  135. return _suggestions.map { $0.raw }
  136. }
  137. set {
  138. _suggestions.removeAll()
  139. _suggestions.append(objectsIn: newValue.map({ RLMString(value: [$0]) }))
  140. }
  141. }
  142.  
  143. override static func primaryKey() -> String? {
  144. return "id"
  145. }
  146.  
  147. override static func ignoredProperties() -> [String] {
  148. return ["partScores", "explainations", "suggestions"]
  149. }
  150. }
  151.  
  152. class UserData: Object {
  153. dynamic var id: Int = 0
  154. dynamic var code: String = "" // 量表代码,一般为英文缩写
  155. dynamic var result: Result?
  156. dynamic var date: Date = Date.init()
  157.  
  158. override static func primaryKey() -> String? {
  159. return "id"
  160. }
  161. }
  162.  
  163. class User: Object {
  164. dynamic var id: Int = 0
  165. dynamic var username: String = ""
  166. dynamic var password: String = ""
  167. dynamic var email: String = ""
  168. dynamic var phone: String = ""
  169. dynamic var role: String = ""
  170. dynamic var sex: String = "" // 生理性别
  171. dynamic var gender: String = "" // 文化性别
  172. dynamic var avatar: Data?
  173. dynamic var banner: Data?
  174. let userData = List<UserData>()
  175.  
  176. override static func primaryKey() -> String? {
  177. return "id"
  178. }
  179. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement