Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // LocalDB.swift
- // PsychoPath
- //
- // Created by Oling Cat on 2017/7/14.
- // Copyright © 2017年 Oling Cat. All rights reserved.
- //
- import RealmSwift
- //protocol ItemPresentable {
- // var orderNum: String { get set }
- // var quiz: String { get set }
- // var options: [String] { get set }
- // var range: Int { get set }
- // var isReverse: Bool { get set }
- // var forGender: String { get set }
- //}
- //
- //protocol QuestPresentable {
- // var code: String { get set }
- // var title: String { get set }
- // var intro: String { get set }
- // var role: String { get set }
- // var age: Int { get set }
- // var base: Int { get set }
- // var result: Data { get set }
- //
- // associatedtype Item: Object, ItemPresentable
- // var items: List<Item> { get set }
- //}
- // 使 Realm 支持数组
- class RLMString: Object {
- dynamic var raw = ""
- }
- class RLMFloat: Object {
- dynamic var raw: Float = 0.0
- }
- // 问题
- class Quizz: Object {
- dynamic var id: Int = 0
- dynamic var order: String = ""
- dynamic var title: String = ""
- var options: [String] {
- get {
- return _options.map { $0.raw }
- }
- set {
- _options.removeAll()
- _options.append(objectsIn: newValue.map({ RLMString(value: [$0]) }))
- }
- }
- let _options = List<RLMString>()
- dynamic var range: Int = 0
- dynamic var isReverse: Bool = false // 是否反向记分
- dynamic var hasExtra: Bool = false // 是含有附加问题
- dynamic var forGender: String = ""
- override static func primaryKey() -> String? {
- return "id"
- }
- override static func ignoredProperties() -> [String] {
- return ["options"]
- }
- }
- extension Quizz {
- override var description: String {
- return "\norder= \(self.order)\ntitle= \(self.title)"
- }
- }
- // 量表
- class Questionnaire: Object {
- dynamic var id: Int = 0
- dynamic var code: String = ""
- dynamic var title: String = ""
- dynamic var summary: String = ""
- dynamic var intro: String = ""
- dynamic var role: String = "normal"
- dynamic var age: Int = 18
- dynamic var base: Int = 0
- dynamic var weight: Int = 0 // 量表权重
- dynamic var result: Data?
- let items = List<Quizz>()
- override static func primaryKey() -> String? {
- return "id"
- }
- }
- class Category: Object {
- dynamic var id: Int = 0
- dynamic var title: String = ""
- dynamic var summary: String = ""
- let questionnaires = List<Questionnaire>()
- override static func primaryKey() -> String? {
- return "id"
- }
- }
- class Result: Object {
- dynamic var id: Int = 0
- let _partScores = List<RLMFloat>() // 各项分数,scores[0] 为总分
- dynamic var totalScore: Float = 0.0 // 总分,total = scores[0]
- let _explainations = List<RLMString>()
- let _suggestions = List<RLMString>()
- var partScores: [Float] {
- get {
- return _partScores.map { $0.raw }
- }
- set {
- _partScores.removeAll()
- _partScores.append(objectsIn: newValue.map({ RLMFloat(value: [$0]) }))
- }
- }
- var explainations: [String] {
- get {
- return _explainations.map { $0.raw }
- }
- set {
- _explainations.removeAll()
- _explainations.append(objectsIn: newValue.map({ RLMString(value: [$0]) }))
- }
- }
- var suggestions: [String] {
- get {
- return _suggestions.map { $0.raw }
- }
- set {
- _suggestions.removeAll()
- _suggestions.append(objectsIn: newValue.map({ RLMString(value: [$0]) }))
- }
- }
- override static func primaryKey() -> String? {
- return "id"
- }
- override static func ignoredProperties() -> [String] {
- return ["partScores", "explainations", "suggestions"]
- }
- }
- class UserData: Object {
- dynamic var id: Int = 0
- dynamic var code: String = "" // 量表代码,一般为英文缩写
- dynamic var result: Result?
- dynamic var date: Date = Date.init()
- override static func primaryKey() -> String? {
- return "id"
- }
- }
- class User: Object {
- dynamic var id: Int = 0
- dynamic var username: String = ""
- dynamic var password: String = ""
- dynamic var email: String = ""
- dynamic var phone: String = ""
- dynamic var role: String = ""
- dynamic var sex: String = "" // 生理性别
- dynamic var gender: String = "" // 文化性别
- dynamic var avatar: Data?
- dynamic var banner: Data?
- let userData = List<UserData>()
- override static func primaryKey() -> String? {
- return "id"
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement