OSDN Git Service

Swift4.0にコンバートした
[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 /* MARK: CONVERT */            let k = String(key[key.index(key.startIndex, offsetBy: 4)...])
61             
62             return value(forKey: k)
63         }
64         
65         print("Entity \(type(of: self).entityName) dose not have key \(key)")
66         
67         return nil
68     }
69     
70     override func setValue(_ value: Any?, forUndefinedKey key: String) {
71         
72         if key == "description" {
73             
74             setValue(value, forKey: "description_")
75             
76             return
77         }
78         
79         if key.hasPrefix("api_") {
80             
81 /* MARK: CONVERT */            let k = String(key[key.index(key.startIndex, offsetBy: 4)...])
82             setValue(value, forKey: k)
83             
84             return
85         }
86         
87         print("Entity \(type(of: self).entityName) dose not have key \(key)")
88     }
89 }