2 // KCManagedObject.swift
5 // Created by Hori,Masaki on 2017/02/02.
6 // Copyright © 2017年 Hori,Masaki. All rights reserved.
13 enum KCManagedObjectError: Error {
18 class KCManagedObject: NSManagedObject {
20 private static let intValueKyes: Set<String> = ["api_aftershipid", "api_level"]
22 override func validateValue(_ value: AutoreleasingUnsafeMutablePointer<AnyObject?>, forKey key: String) throws {
24 if value.pointee is NSNull {
31 if KCManagedObject.intValueKyes.contains(key) {
33 if let _ = value.pointee as? Int {
37 if let s = value.pointee as? String {
39 value.pointee = Int(s) as AnyObject?
44 print("KCManagedObject type \(type(of: value.pointee))")
46 throw KCManagedObjectError.invalid
50 override func value(forUndefinedKey key: String) -> Any? {
52 if key == "description" {
54 return value(forKey: "description_")
57 if key.hasPrefix("api_") {
59 let k = String(key[key.index(key.startIndex, offsetBy: 4)...])
61 return value(forKey: k)
64 print("Entity \(String(describing: self)) dose not have key \(key)")
69 override func setValue(_ value: Any?, forUndefinedKey key: String) {
71 if key == "description" {
73 setValue(value, forKey: "description_")
78 if key.hasPrefix("api_") {
80 let k = String(key[key.index(key.startIndex, offsetBy: 4)...])
81 setValue(value, forKey: k)
86 print("Entity \(String(describing: self)) dose not have key \(key)")