OSDN Git Service

コード整形
[kcd/KCD.git] / KCD / KCManagedObject.swift
1 //
2 //  KCManagedObject.swift
3 //  KCD
4 //
5 //  Created by Hori,Masaki on 2017/02/02.
6 //  Copyright © 2017年 Hori,Masaki. All rights reserved.
7 //
8
9 import Foundation
10 import CoreData
11
12 enum KCManagedObjectError: Error {
13     
14     case invalid
15 }
16
17 class KCManagedObject: NSManagedObject {
18     
19     private static let intValueKyes =
20         [
21     "api_enqflg", "api_aftershipid", "api_progress", "api_usebull",
22     "api_flagship", "api_name_id",
23     "api_comment_id", "api_nickname_id", "api_member_id",
24     "api_flag_0", "api_flag_1", "api_flag_2", "api_flag_3", "api_flag_4",
25     "api_flag_5", "api_flag_6", "api_flag_7",
26     "api_level"
27     ]
28     
29     override func validateValue(_ value: AutoreleasingUnsafeMutablePointer<AnyObject?>, forKey key: String) throws {
30         
31         if value.pointee is NSNull {
32             
33             value.pointee = nil
34             
35             return
36         }
37         
38         if KCManagedObject.intValueKyes.contains(key) {
39             
40             if let _ = value.pointee as? Int { return }
41             if let s = value.pointee as? String {
42                 
43                 value.pointee = Int(s) as AnyObject?
44                 
45                 return
46             }
47             
48             print("KCManagedObject type \(type(of: value.pointee))")
49             
50             throw KCManagedObjectError.invalid
51         }
52     }
53     
54     override func value(forUndefinedKey key: String) -> Any? {
55         
56         if key == "description" { return value(forKey: "description_") }
57         
58         if key.hasPrefix("api_") {
59             
60             let four = key.index(key.startIndex, offsetBy: 4)
61             let k = key[four..<key.endIndex]
62             
63             return value(forKey: k)
64         }
65         
66         print("Entity \(type(of: self).entityName) dose not have key \(key)")
67         
68         return nil
69     }
70     
71     override func setValue(_ value: Any?, forUndefinedKey key: String) {
72         
73         if key == "description" {
74             
75             setValue(value, forKey: "description_")
76             
77             return
78         }
79         
80         if key.hasPrefix("api_") {
81             
82             let four = key.index(key.startIndex, offsetBy: 4)
83             let k = key[four..<key.endIndex]
84             setValue(value, forKey: k)
85             
86             return
87         }
88         
89         print("Entity \(type(of: self).entityName) dose not have key \(key)")
90     }
91 }