Core DataãšSwiftã«ã€ããŠã¯ãç¹ã«ã€ã³ã¿ãŒãããã®ãã·ã¢èªã»ã°ã¡ã³ãã«ã€ããŠã¯ããŸãæžãããŠããŸããã ãã ããã»ãšãã©ã®èšäºãšäŸã§ã¯ãããªãåå§çãªããŒã¿ã¢ãã«ã䜿çšããŠãã³ã¢ããŒã¿ã®æ¬è³ªã®ã¿ã瀺ãã詳现ã«ã¯è§ŠããŸããã ãã®èšäºã§ã¯ãå®éã®äŸã§ã³ã¢ããŒã¿ã«ã€ããŠããå°ã説æããããšã§ããã®ã®ã£ãããåããããšæããŸãã æåã¯ããã¹ãŠã®è³æã1ã€ã®èšäºã«åããããšãèšç»ããŠããŸããããå·çã®éçšã§ã1ã€ã®åºçç©ã§ã¯æããã«ããªã¥ãŒã ã倧ããããããšãæããã«ãªããŸããã
å°å
¥ã®ä»£ããã«
Core Dataã¯ãã¢ãã«ã®ã°ã©ããä¿åããã³ç®¡çããããã®åŒ·åã§æè»ãªãã¬ãŒã ã¯ãŒã¯ã§ãããiOSéçºè
ã®æŠåšåº«ã«åã£ãŠä»£ãããã®ã§ãã 確ãã«ãå°ãªããšããã®ãã¬ãŒã ã¯ãŒã¯ã«ã€ããŠäœåºŠãè³ã«ããããšããããŸããäœããã®çç±ã§ãŸã 䜿çšããŠããªãå Žåã¯ããããå§ããŸãããã
ããåºãã®çè«ã¯éåžžéåžžã«éå±ã§åžåããã«ãããããå®çšçãªäŸã䜿çšããŠã³ã¢ããŒã¿ãæäœããã¢ããªã±ãŒã·ã§ã³ãäœæããããšãæ€èšããŸãã ç§ã®æèŠã§ã¯ããTo-doãªã¹ãããªã©ã®ã³ã¢ããŒã¿ã䜿çšããäžè¬çãªäŸã¯ã1ã€ã®ãšã³ãã£ãã£ã®ã¿ã䜿çšããçžäºæ¥ç¶ã䜿çšããªããããããŸãé©åã§ã¯ãããŸããã ãã®èšäºã§ã¯ãè€æ°ã®ãšã³ãã£ãã£ãšãããã®éã®é¢ä¿ã䜿çšããã¢ããªã±ãŒã·ã§ã³ãéçºããŸãã
èªè
ã¯iOSéçºã®åºæ¬ã«ç²ŸéããŠããããšãåæãšããŠããŸããã¹ããŒãªãŒããŒããç¥ã£ãŠãããMVCãçè§£ããåºæ¬çãªã³ã³ãããŒã«ã®äœ¿ç𿹿³ãç¥ã£ãŠããŸãã ç§èªèº«ã¯æè¿iOSã«åãæ¿ããã®ã§ãèšäºã«èª€ããäžæ£ç¢ºãããŸãã¯
ãã¹ããã©ã¯ãã£ã¹ãç¡èŠããŠããå¯èœæ§ããããŸãã Xcode 7.3.1ãšiOS 9.3.2ã䜿çšããŸãããä»ã®ããŒãžã§ã³ã§ããã¹ãŠæ©èœããã¯ãã§ãã
ã³ã¢ããŒã¿ã®æŠèŠ
åè¿°ã®ããã«ãCore Dataã¯ããŒã¿ã¢ãã«ã®ãªããžã§ã¯ãã°ã©ããä¿åããã³ç®¡çããããã®ãã¬ãŒã ã¯ãŒã¯ã§ãã ãã¡ãããCore Dataã䜿çšããã«ããŒã¿ã管çããã³ä¿åã§ããŸããããã®ãã¬ãŒã ã¯ãŒã¯ã䜿çšãããšãã¯ããã«å¿«é©ã§äŸ¿å©ã«ãªããŸãã
ç§ã®æèŠã§ã¯ãäž»èŠãªã³ã³ããŒãã³ããšãã³ã¢ããŒã¿ãå
šäœãšããŠã©ã®ããã«æ©èœããããçè§£ããããšãéèŠã§ãã ã€ãŸããåŠç¿æ²ç·ã¯ãç§ãããèšããããããªãå Žåãå¹³åããããã«äžåããšã³ããªãŒã®ãããå€ãæ³å®ããŠããŸãã åžžã«äœ¿çšãããã³ã¢ããŒã¿ã®äž»èŠãªã³ã³ããŒãã³ãã¯æ¬¡ã®ãšããã§ãã
- 管ç察象ã¢ãã« ïŒç®¡ç察象ã¢ãã«ïŒ-å®éãããã¯ïŒMVCãã©ãã€ã ã®ïŒã¢ãã«ã§ããããã¹ãŠã®ãšã³ãã£ãã£ããã®å±æ§ãããã³é¢ä¿ãå«ãŸããŠããŸãã
- 管ç察象ãªããžã§ã¯ãã³ã³ããã¹ã -ã¢ãã«ãªããžã§ã¯ãã®ã³ã¬ã¯ã·ã§ã³ã管çããããã«äœ¿çšãããŸãïŒäžè¬çãªå Žåãããã€ãã®ã³ã³ããã¹ãããããŸãïŒã
- æ°žç¶ã¹ãã¢ã³ãŒãã£ããŒã¿ãŒ -ããŒã¿ãŠã§ã¢ããŠã¹ãšãã®ããŒã¿ã䜿çšãããã³ã³ããã¹ããšã®éã®ä»²ä»è
ã§ãããããŒã¿ã®ä¿åãšãã£ãã·ã¥ãæ
åœããŸãã
ãã¡ãããã³ã¢ããŒã¿ã¯ãããã®ã³ã³ããŒãã³ãã ãã«éå®ãããŸããïŒä»¥äžã§ä»ã®ããã€ããæ€èšããŸãïŒããããã3ã€ã¯ãã¬ãŒã ã¯ãŒã¯ã®åºç€ã圢æãããã®ç®çãšåäœåçãçè§£ããããšã¯éåžžã«éèŠã§ãã
äŸã§ã³ã¢ããŒã¿ã®èª¬æãç¶ããŸãããã
ã·ã³ã°ã«ãã¥ãŒã¢ããªã±ãŒã·ã§ã³ãã³ãã¬ãŒãã«åºã¥ããŠæ°ãããããžã§ã¯ããäœæããæ°ãããããžã§ã¯ãã®ãªãã·ã§ã³ããŒãžã§
ãã³ã¢ããŒã¿ã䜿çšããã§ãã¯ããã¯ã¹ãéžæããŸãã

ãã®ãã§ãã¯ããã¯ã¹ããªã³ã®å ŽåãXcodeã¯ç©ºã®ããŒã¿ã¢ãã«ãšãããžã§ã¯ãã«Core Dataãæäœããããã®äžå®éã®ããã°ã©ã ã³ãŒãã远å ããŸãã ãã¡ãããæ¢åã®ãããžã§ã¯ãã§æ¢ã«ã³ã¢ããŒã¿ã®äœ¿çšãéå§ã§ããŸãããã®å ŽåãããŒã¿ã¢ãã«ãèªåã§äœæããé©åãªããã°ã©ã ã³ãŒããèšè¿°ããå¿
èŠããããŸãã
ããã©ã«ãã§ã¯ãXcodeã¯Core Dataãæäœããããã®ã³ãŒããã¢ããªã±ãŒã·ã§ã³ããªã²ãŒãã¯ã©ã¹ïŒ
AppDelegate.swift
ïŒã«è¿œå ããŸãã ããããã詳现ã«èŠãŠã¿ãŸããããããã¯ã³ã¡ã³ãã§å§ãŸããŸãïŒ
4ã€ã®å€æ°ãããããããã¯ãã¹ãŠã¯ããŒãžã£ãŒã§åæåãããŸãã ãã ãããããã®æåã®
applicationDocumentsDirectory
ããŒã¿ãæ ŒçŽããããã®ãã£ã¬ã¯ããªãè¿ãåãªããã«ããŒã¡ãœããã§ãã ããã©ã«ãã§ã¯ãããã¯
Document Directory
ã倿Žã§ããŸãããå®éã«å¿
èŠã«ãªãããšã¯ã»ãšãã©ãããŸããã å®è£
ã¯åçŽã§ãããçè§£ããã®ãé£ãããªãã¯ãã§ãã
lazy var applicationDocumentsDirectory: NSURL = { let urls = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask) return urls[urls.count-1] }()
次ã®å®çŸ©ã
managedObjectModel
ã³ã¢ããŒã¿ã«æãé¢é£ããŠãããã
managedObjectModel
ããè峿·±ããã®ã§ãã
lazy var managedObjectModel: NSManagedObjectModel = { let modelURL = NSBundle.mainBundle().URLForResource("core_data_habrahabr_swift", withExtension: "momd")! return NSManagedObjectModel(contentsOfURL: modelURL)! }()
ããã°ã©ã ã³ãŒãã®ããžãã¯ã¯ç°¡åã§ããã¢ããªã±ãŒã·ã§ã³ã¢ã»ã³ããªãã
momd
æ¡åŒµåãæã€ç¹å®ã®ãã¡ã€ã«ãååŸããããã«åºã¥ããŠãªããžã§ã¯ãããŒã¿ã¢ãã«ãäœæããŸãã ãããã©ã®ãããªçš®é¡ã®ãã¡ã€ã«ã§ãããã調ã¹ãããšã¯æ®ã£ãŠããŸãã
Projectããã²ãŒã¿ãŒã®ãã¡ã€ã«ãèŠããšã
xdatamodel
æ¡åŒµåã®ãã¡ã€ã«ããããŸã-ããã¯ã³ã¢ããŒã¿ããŒã¿ã¢ãã«ã§ãïŒãããæäœããæ¹æ³ã«ã€ããŠã¯åŸã§èª¬æããŸãïŒã

ããã«é²ãã§ãã ãã-persistentStoreCoordinatorã¯æãèšå€§ãªå®çŸ©ã§ããããã®æãããå€èгã«ãããããããæãã£ãŠã¯ãããŸãã-ã»ãšãã©ã®ã³ãŒãã¯äŸå€ã«ãã£ãŠåŠçãããŸãïŒ
lazy var persistentStoreCoordinator: NSPersistentStoreCoordinator = { let coordinator = NSPersistentStoreCoordinator(managedObjectModel: self.managedObjectModel) let url = self.applicationDocumentsDirectory.URLByAppendingPathComponent("SingleViewCoreData.sqlite") var failureReason = "There was an error creating or loading the application's saved data." do { try coordinator.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url, options: nil) } catch { var dict = [String: AnyObject]() dict[NSLocalizedDescriptionKey] = "Failed to initialize the application's saved data" dict[NSLocalizedFailureReasonErrorKey] = failureReason dict[NSUnderlyingErrorKey] = error as NSError let wrappedError = NSError(domain: "YOUR_ERROR_DOMAIN", code: 9999, userInfo: dict) NSLog("Unresolved error \(wrappedError), \(wrappedError.userInfo)") abort() } return coordinator }()
ããã§ã¯ããªããžã§ã¯ãé§ååã¢ãã«ã«åºã¥ããŠãæ°žç¶çãªã¹ãã¬ãŒãžã³ãŒãã£ããŒã¿ãŒãäœæãããŸãã æ¬¡ã«ãããŒã¿ãä¿åããå Žæã決å®ããŸãã ãããŠçµè«ãšããŠãã¹ãã¬ãŒãžèªäœïŒ
coordinator.addPersistentStoreWithType
ïŒãæ¥ç¶ããã¹ãã¬ãŒãžã¿ã€ããšãã®å Žæããã©ã¡ãŒã¿ãŒãšããŠå¯Ÿå¿ããã¡ãœããã«æž¡ããŸãã ããã©ã«ãã¯
SQLiteã§ãã ä»ã®2ã€ã®ãã©ã¡ãŒã¿ãŒã§ã¯è¿œå ã®ãã©ã¡ãŒã¿ãŒãšãªãã·ã§ã³ãæž¡ãããšãã§ããŸããããã®æ®µéã§ã¯ããã¯å¿
èŠãªãããã
nil
æž¡ãã ãã§ãã
æåŸã®å®çŸ©
managedObjectContext
åé¡ã¯ãªããšç¢ºä¿¡ããŠããŸãïŒ
lazy var managedObjectContext: NSManagedObjectContext = { let coordinator = self.persistentStoreCoordinator var managedObjectContext = NSManagedObjectContext(concurrencyType: .MainQueueConcurrencyType) managedObjectContext.persistentStoreCoordinator = coordinator return managedObjectContext }()
ããã§ã管ç察象ãªããžã§ã¯ãã®æ°ããã³ã³ããã¹ããäœæããããŒããã³ãã¹ãã¬ãŒãžã³ãŒãã£ããŒã¿ãŒãžã®ãªã³ã¯ãå²ãåœãŠãŸãããã®ãªã³ã¯ã䜿çšããŠãå¿
èŠãªããŒã¿ãèªã¿æžãããŸãã æ³šç®ãã¹ã詳现ã¯ã
NSManagedObjectContext
ã³ã³ã¹ãã©ã¯ã¿ãŒãžã®åŒæ°ã§ãã äžè¬çã«ãç°ãªãã¹ã¬ããã§å®è¡ãããè€æ°ã®äœæ¥ã³ã³ããã¹ããååšããå¯èœæ§ããããŸãïŒããšãã°ã1ã€ã¯ã€ã³ã¿ã©ã¯ãã£ããªäœæ¥çšããã1ã€ã¯ããã¯ã°ã©ãŠã³ãããŒã¿ã®ããŒãçšïŒã
MainQueueConcurrencyType
ãåŒæ°ãšããŠæž¡ãããã®ã³ã³ããã¹ããã¡ã€ã³ã¹ã¬ããã§äœæããå¿
èŠãããããšã瀺ããŸãã
ã³ã³ããã¹ããç¶æããããã®äŸ¿å©ãªãã«ããŒé¢æ°ãããã«ãããŸãã ãã®æå³ã¯æããã§ããããŒã¿ã¯ãå®éã«å€æŽãããå Žåã«ã®ã¿èšé²ãããŸãã
func saveContext () { if managedObjectContext.hasChanges { do { try managedObjectContext.save() } catch { let nserror = error as NSError NSLog("Unresolved error \(nserror), \(nserror.userInfo)") abort() } } }
ããã§æ³šæããããšãéèŠã§ãïŒ
ããŒã¿ã®ãã¹ãŠã®äœæ¥ ïŒäœæã倿Žãåé€ïŒã¯ã
åžžã«ä»»æã®ã³ã³ããã¹ãå
ã§è¡ãããŸã ã ã¹ãã¬ãŒãžãžã®å®éã®æžã蟌ã¿
ã¯ãã³ã³ããã¹ãä¿å颿°ã
æç€ºçã«åŒã³åºããããšãã«ã®ã¿å®è¡ã
ããŸãã
ããŒã¿ã¢ãã«ã®äœæ
ããŒã¿ã¢ãã«ãäœæããã«ã¯ãçµã¿èŸŒã¿ã®ãšãã£ã¿ãŒã䜿çšãããŸãã æ°ãããããžã§ã¯ããäœæãããšãã«
ãã³ã¢ããŒã¿ã䜿çšãããã§ãã¯ããããã空ã®ããŒã¿ã¢ãã«ãæ¢ã«ãããèªåçã«XcodeãäœæãããŸãã ãããéããŠãã¢ããªã±ãŒã·ã§ã³ã®ããŒã¿ã¢ãã«ãäœæããŸãããã

ç¹å®ã®ãµãŒãã¹ãå®è¡ããããã«ãååŒå
ããã®æ³šæã远跡ããã¢ããªã±ãŒã·ã§ã³ãäœæããŸãã ãã®ã¢ããªã±ãŒã·ã§ã³ã¯ããã»ã©è€éã§ã¯ãããŸãããã坿¥ã«é¢é£ããããã€ãã®ç°ãªããšã³ãã£ãã£ããããŸãã ããã«ãããã³ã¢ããŒã¿ãæäœããããã®ããŸããŸãªåŽé¢ãšææ³ãããããŸãã ãã®ããã
ãCustomersããš
ãServicesãã® 2ã€ã®ãã£ã¬ã¯ããªãšãè€æ°ã®ãµãŒãã¹ãååšããå¯èœæ§ã®ãã1ã€ã®ããã¥ã¡ã³ã
ãOrderããäœæããŸãã
åæ
çãªäœè«ããã£ã¬ã¯ããªããšãããã¥ã¡ã³ãããšããçšèªã¯ãã1CïŒãšã³ã¿ãŒãã©ã€ãºããšããçšèªããåã£ããã®ã§ããã³ã¢ã·ã¹ãã ãæãåºãããã®ã¯ãã®ã·ã¹ãã ã ããã§ãã ãšã³ãã£ãã£ïŒãã£ã¬ã¯ããª/ããã¥ã¡ã³ãïŒãæ§ç¯ããããã®åæ§ã®ããžãã¯ãåæ§ã®å±æ§ãã©ã¡ãŒã¿ãŒãããŒã¿ã®èªã¿åã/æžãèŸŒã¿æäœã®ã«ãã»ã«åããã£ãã·ã¥ãªã©ã ã1CïŒEnterpriseãã¯ãã³ã¢ããŒã¿ã«é¢é£ããæ¬¡ã®ã¬ãã«ã®ããŒã¿æœè±¡åã§ãã
ããŠã ãã©ãã¯ãžã£ãã¯ãšéåžžã®ãã¶ã€ã³ã§ã1CïŒEnterpriseã ãæžããŸãããïŒ
ãã£ã¬ã¯ããªã®äœæ
顧客ããå§ããŸãããã ããŒã¿ã¢ãã«ãšãã£ã¿ãŒã§ãæ°ãããšã³ãã£ãã£ïŒäžéšã«
ããšã³ãã£ãã£ã远å ããšãã眲åãä»ãããã¿ã³ïŒã
远å ãã
«Customer»
ãšããååãä»ããŸãã ãã®ãšã³ãã£ãã£ã¯ã顧客ïŒ1ã€ïŒãæ¬äººåããŸãã ãšã³ãã£ãã£ã«ã¯ã屿§ãé¢ä¿ãããã³ååŸããããããã£ïŒãã§ããããããã£ïŒãå«ããããšãã§ããŸãã å°ãç°¡ç¥åãããšãå¯èœãªå€ã®ã¿ã€ãã«ããã屿§ãšé¢ä¿ã®éãã¯æ¬¡ã®ãšããã§ãã屿§ã¯åçŽãªããŒã¿åïŒæååãæ°å€ãæ¥ä»ãªã©ïŒã®ã¿ããµããŒãããé¢ä¿ã¯å¥ã®ãšã³ãã£ãã£ãžã®åç
§ã§ãåïŒã ãã§ããããããã£ã¯ãèšç®ãããããããã£ã«é¡äŒŒããŠããŸããã€ãŸããå€ã¯ãäºåå®çŸ©ãããã¯ãšãªã«åºã¥ããŠåçã«èšç®ïŒããã³ãã£ãã·ã¥ïŒãããŸãã
DBMSã䜿çšããŠã次ã®é¡äŒŒæ§ãåŒãåºãããšãã§ããŸãã
- ããŒã¿ã¢ãã«-ããŒã¿ããŒã¹ã¹ããŒã
- ãšã³ãã£ãã£-ããŒã¿ããŒã¹ããŒãã«
- 屿§ãšé¢ä¿-ããŒãã«ãã£ãŒã«ã
ãšã³ãã£ãã£
«Customer»
ã«ã¯ã
ãNameããš
ãExtras ãã® 2ã€ã®å±æ§ããããŸã
ã æ
å ±âïŒ info
ïŒ ã ãããã远å ããŠã
String
å€åã«èšå®ããŠã¿ãŸãããã ããŒã¿ã¢ãã«ãšãã£ã¿ã§ã¯ããªããžã§ã¯ãã®åœåã«ç¹å®ã®èŠä»¶ãããããšã«æ³šæããŠãã ããããšã³ãã£ãã£ã®ååã¯å¿
ã倧æåã§å§ãŸãã屿§ã®ååãšå°ããªååãšã®é¢ä¿ãå¿
èŠã§ãã

次ã®éèŠãªéšåã¯
ããŒã¿ã¢ãã«ã€ã³ã¹ãã¯ã¿ãŒã§ãããŒã¿ã¢ãã«ãšãã£ã¿ãŒã®å³åŽã«è¡šç€ºãããŸãã ããã䜿çšããŠããšã³ãã£ãã£ããšã³ãã£ãã£å±æ§ïŒããŒãããžãŒã«ã€ããŠã¯ãã¿ãŸããïŒãé¢ä¿ãããã³ãã®ä»ã®ãªããžã§ã¯ãã®ããŸããŸãªå±æ§ãšãã©ã¡ãŒã¿ãŒãèšå®ã§ããŸãã ããšãã°ããšã³ãã£ãã£ãæœè±¡ãšããŠããŒã¯ãããã芪ãšã³ãã£ãã£ãæå®ãããããããšãã§ããŸãïŒååã¯OOPå
šäœãšåãã§ãïŒã
ãšã³ãã£ãã£å±æ§ã®å Žåã䜿çšå¯èœãªãã©ã¡ãŒã¿ãŒã®ãªã¹ãã¯å±æ§ã®çš®é¡ã«ãã£ãŠç°ãªããŸãã ããšãã°ãæ°å€ã®å Žåã¯äžéããã³/ãŸãã¯äžéãæå®ã§ããæ¥ä»ã®å Žåã¯æå¹ãªç¯å²ãæå®ã§ããŸãã ã»ãšãã©ã®å€ã¿ã€ãã«ããã©ã«ãå€ãèšå®ããããšãã§ããŸãã
éèŠãªå±æ§ããããã£ã¯
Optionalã§ãã ãã®æå³ã¯ãSwiftããã°ã©ã ã³ãŒããšãŸã£ããåãã§ãã屿§ãOptionalãšããŠããŒã¯ãããŠããå Žåããã®å€ã¯ååšããªãå¯èœæ§ããããéãåæ§ã§ã-ãã®ãããªããŒãã³ã°ããªãå Žåããšã³ãã£ãã£ã¬ã³ãŒãã¯äžå¯èœã«ãªããŸãã ããã©ã«ãã§ã¯ããã¹ãŠã®å±æ§ã¯ãªãã·ã§ã³ãšããŠããŒã¯ãããŠããŸãã ç§ãã¡ã®å Žåã
name
ãªã顧客ã«ã¯å®çšçãªæå³ããªãããã
name
屿§ã¯ãªãã·ã§ã³ã§ãã£ãŠã¯ãªããŸããïŒOptionalãã©ã°ã¯ãªãã«ããå¿
èŠããããŸãïŒã
ãã®æç¹ã§ã
Customer
ãšã³ãã£ãã£ã®äœæã¯å®äºãããšèŠãªãããšãã§ããŸãã æ¬¡ã®ãšã³ãã£ãã£-ServicesãäœæããŠèšå®ããŸãããã æ°ãããšã³ãã£ãã£ã®äœæ-
Services
ãäœæãã
name
ïŒãµãŒãã¹ã®ååïŒãš
info
ïŒè¿œå æ
å ±ïŒã®2ã€ã®å±æ§ã远å ããŸãã äž¡æ¹ã®å Žåã®ããŒã¿åã¯
String
ã§ã
name
屿§ã¯ãªãã·ã§ã³ã§ãã£ãŠã¯ãªããŸããã äžè¬ã«ããã¹ãŠã¯åã®ãšã³ãã£ãã£ãšåãã§ãããããã§åé¡ãçºçããããšã¯ãããŸããã

泚æããã¥ã¡ã³ãã®äœæ
ããã¥ã¡ã³ã
ãæ³šæãã«æž¡ããŸã-ããã§ã¯ãã¹ãŠãå°ãè€éã§ãã 1ã€ã®ããã¥ã¡ã³ãã«è€æ°ã®ç°ãªããµãŒãã¹ãå«ããããšãã§ããåãµãŒãã¹ã«ã¯ç¬èªã®éããããããããã¥ã¡ã³ãã¯2ã€ã®ãšã³ãã£ãã£ã«ãã£ãŠè¡šç€ºãããŸãã
- ããã¥ã¡ã³ãã®ãããããŒããããã¥ã¡ã³ãã®æ¥ä»ã顧客ãããã³è¡šåœ¢åŒéšåãžã®ãªã³ã¯ãå«ãŸããŸãã
- ãµãŒãã¹ã«å«ãŸããããã¥ã¡ã³ãã®è¡šéšåã®è¡ãšãã®ã³ã¹ããããã³ããã¥ã¡ã³ãã®ããããŒãžã®ãªã³ã¯ã
æåŸã®æ®µèœã®å
容ãããããªããŠãå¿é
ããªãã§ãã ããã ããããã¹ãŠããŒã¿ã¢ãã«ãšãã£ã¿ãŒã§äžç·ã«è¡ããæåŸã«ã¢ãã«ã®ã°ã©ãã£ã«ã«ãªè¡šçŸã確èªããŸãããã®åŸããã¹ãŠãé©åã«é
眮ãããŸãã
ããã¥ã¡ã³ãã®ãããããŒãããå§ããŸããã-æ°ãããšã³ãã£ãã£
«Order»
ãäœæãã3ã€ã®å±æ§ã远å ããŸãïŒããã«ãããã®ã¯ãã¹ãŠã以åã®ãšã³ãã£ãã£ã®äœæãããã§ã«ããªãã¿ã§ãïŒã
date
-ããã¥ã¡ã³ãã®æ¥ä»ãã¿ã€ãDate
ããªãã·ã§ã³ã§ã¯ãªãpaid
-æ¯æãã®ãµã€ã³ãã¿ã€ãBoolean
ããªãã·ã§ã³ã§ã¯ãªããããã©ã«ãå€ã¯NO
Boolean
泚æå®äºã®ãµã€ã³ãã¿ã€ãBoolean
ããªãã·ã§ã³ã§ã¯ãªããããã©ã«ãå€ã¯NO
次ã«ã
é¢ä¿ã«é²ã¿ãŸãã
«customer»
ãšããååã®æ°ããé¢ä¿ã远å ãããã®
Destination
ã
Customer
èšå®ããŸãã å€å°ã®ã¹ãã¬ããã¯ãããŸããã顿šãç¶ãããšã
Order
ããŒãã«ã«
«Customer»
ã¿ã€ãã®æ°ããåã远å ãããšèšããŸãã

ããã©ã«ãã®é¢ä¿ã
ãªãã·ã§ã³ã§ããããšã«æ³šæããŠãã ããã ããã«ã次ã®éåžžã«éèŠãªããããã£ã
Attributes Inspectorã«ååšããŸããããã«ã€ããŠè©³ãã説æããŸãã
- çš®é¡
- ã«ãŒã«ã®åé€ïŒ ã«ãŒã«ã®åé€ïŒ
- é ïŒãã£ãŒãããã¯ïŒ
çš®é¡
ããŒã¿ããŒã¹ã䜿çšããããšãããå Žåããã®æŠå¿µã¯ããããããªãã¿ã§ãããã ããã§ã¯ã
To Oneãš
To Manyã®2ã€ã®ãªãã·ã§ã³ãéžæã§ããŸãã
To One-ç§ãã¡ã®æ³šæã¯1人ã®ç¹å®ã®é¡§å®¢ã
To Many-è€æ°ã®é¡§å®¢ã«é¢é£ä»ããããŠããããšãæå³ããŸãã ãã®å Žåãããã©ã«ãå€
-To Oneã®ãŸãŸã«ããå¿
èŠããããŸãã
ã«ãŒã«ã®åé€ïŒã«ãŒã«ã®åé€ïŒ
éåžžã«éèŠãªããããã£ã§ããããã§ã¯ãäœããã®çç±ã§ãã®æ¥ç¶ãåé€ãããæç¹ã§ããšã³ãã£ãã£ã®å¯èœãªåäœã®1ã€ãéžæããå¿
èŠããããŸãã æ¬¡ã®ãªãã·ã§ã³ãå¯èœã§ãã
- ã¢ã¯ã·ã§ã³ãªã -Core Dataã¯ãåé€ã®éç¥ãå«ãã¢ã¯ã·ã§ã³ãå®è¡ããŸãã ã ãšã³ãã£ãã£ã¯åé€ããªãã£ããšãèãããã§ãããã ãã®å Žåãå¿
èŠãªã¢ããªã±ãŒã·ã§ã³ã®åäœãåå¥ã«å®è£
ããå¿
èŠããããŸãã ããªãã¯ããã䜿ããããªãã§ãããã
- Nullify-æ¥ç¶ãåé€ããããšããã®å€ã¯
nil
ã«èšå®ãããŸãã ããã©ã«ãã§ã¯ãæãäžè¬çãªãªãã·ã§ã³ã䜿çšãããŸãã - ã«ã¹ã±ãŒã ïŒã«ã¹ã±ãŒãåé€ïŒ-æ¥ç¶ãåé€ãããšããã®ãªã³ã¯ã«ãªã³ã¯ããŠãããã¹ãŠã®é¡§å®¢ãèªåçã«åé€ãããŸãïŒæããã«ç§ãã¡ã®å Žåã§ã¯ãããŸããïŒ
- æåŠ -åã®ã«ãŒã«ãšã¯éã®ã«ãŒã«ã§ãããã®æ¬è³ªã¯ãå°ãªããšã1ã€ã®ãªã³ã¯ãããéã¯ãªããžã§ã¯ããåé€ã§ããªããšããããšã§ãã ããšãã°ããã®ãããªã¢ãããŒãã¯ã1CïŒEnterpriseã®ãã¹ãŠã®ãªããžã§ã¯ãã«é©çšãããŸãã
å®éãéžæããåäœã¯ããã°ã©ã ããžãã¯ã«ãã£ãŠã®ã¿æ±ºå®ãããŸãã ãããæ°ã«ãããããã©ã«ãå€ã§ãã
Nullifyã®ãŸãŸã«ããŠãããŸãã
éïŒãã£ãŒãããã¯ïŒ
ãæ³šæããšã顧客ãã®é¢ä¿ã远å ããŸããããã顧客ãã¯åå ãããæ³šæãã«ã€ããŠäœãç¥ããŸããã èŠåããã®ããšãèŠåããŠããŸãã

ãããä¿®æ£ããã«ã¯ããšã³ãã£ãã£ã顧客ããšã®éã®é¢ä¿ãäœæããããããã£ãŒãããã¯ãšããŠæå®ããå¿
èŠããããŸãã Core Dataã®å
¬åŒããã¥ã¡ã³ãã§ã¯ãåžžã«éæ¥ç¶ãè¡ãããšã匷ããå§ãããŠããããšã«æ³šæããå¿
èŠããããŸãã å³å¯ã«èšãã°ãããã¯ã§ããŸããïŒçµå±ãããã¯ãšã©ãŒã§ã¯ãªãèŠåã§ãïŒãããããè¡ãçç±ãšçç±ãæç¢ºã«çè§£ããå¿
èŠããããŸãã
ãããä¿®æ£ãã
orders
ãšããååã®
Customer
ãšã³ãã£ãã£ã®æ°ãããªã¬ãŒã·ã§ã³ã·ãããäœæãã
Destination = Order
ãéžæãããã£ãŒãããã¯ãšããŠãå
ã»ã©äœæãã
customer
ãªã¬ãŒã·ã§ã³ã·ãããæå®ã
customer
ã å¥ã®ãã€ã³ã-1人ã®é¡§å®¢ãäžè¬çãªã±ãŒã¹ã§ã¯å€ãã®ããã¥ã¡ã³ããæã£ãŠããå¯èœæ§ããã
To Many
ãéä¿¡ã®ã¿ã€ãã
To Many
ãŸãã

«Order»
ãšã³ãã£ãã£ã«æ»ããšããã£ãŒãããã¯ãæ¢ã«
orders
èªåçã«èšå®ãããŠããããšãããããŸãã
次ã«ãããã¥ã¡ã³ãã®è¡šéšåãäœæããŸãããã
«RowOfOrder»
ãšããååã®æ°ãããšã³ãã£ãã£ã远å ããŸãã
Floatã¿ã€ãã®
«sum»
ïŒããµãŒãã¹ã®åèšãïŒïŒãããè¡ãæ¹æ³ã¯æ¢ã«ç¥ã£ãŠããŸãã詳现ã¯èª¬æããŸããïŒãš2ã€ã®é¢ä¿ïŒ
ãServiceããš
ãOrderã ïŒã®1ã€ã®å±æ§ããããŸãã Orderããå§ããŸããã
Destination
ãšããååãš
Destination
ãšçããæ°ããé¢ä¿ã远å ããŸãã ææžè¡ã¯1ã€ã®ææžã«ã®ã¿å±ããããšãã§ãã
To One
ã
Type
ã¯
To One
ãªããã°ãªããŸããã ããŠãããã¥ã¡ã³ããåé€ããããšã«ããå Žåã
Delete Rule
Cascade
ãããããããã®è¡ãåé€ããå¿
èŠããããŸãã

次ã«ã
Orderãšã³ãã£ãã£ã«æ»ã£ãŠãã£ãŒãããã¯ãäœæããŸãã
rowsOfOrder (Destination = RowOfOrder, Inverse = order)
ãšããååã®æ°ãããªã³ã¯ã远å ããŸãã ãªã³ã¯ã¿ã€ãã
To Many
ã«å€æŽããããšãå¿ããªãã§ãã ããïŒ1ã€ã®ããã¥ã¡ã³ãã«è€æ°ã®è¡ãããå ŽåãããããïŒã
Serviceãšã³ãã£ãã£ãŒãšã®é¢ä¿ã®ã¿ã
RowOfOrderãšã³ãã£ãã£ãŒã«
远å ããŸãã äžèšã®ãã¹ãŠãèãããšãããã¯ãã¹ãŠåãã·ããªãªã§è€éã«ãªãã¹ãã§ã¯ãããŸããã
«RowOfOrder»
ãšã³ãã£ãã£ã®ããŒã
service (Destination = Service)
ãšã®æ°ããé¢ä¿ã远å ããæ®ãã¯ããã©ã«ãã®ãŸãŸã«ããŸãã æ¬¡ã«ã
Service
ãšã³ãã£ãã£ã«å¯ŸããŠãæ°ããé¢ä¿
«rowsOfOrders» (Destination = rowOfOrder, Inverse = service)
ã远å ããæ¥ç¶ã¿ã€ãã
To Many
èšå®ããŸãã
éèŠãªãç¥ããïŒ ããŒã¿ã¢ãã«ãäœæããåŸã倿Žããããšã¯ã§ããŸãããCoreDataã¢ããªã±ãŒã·ã§ã³ãæåã«èµ·åãããšãããŒã¿ã¢ãã«ã«åŸã£ãŠãªããžããªãäœæããããã®åŸãã¹ãã¬ãŒãžã¢ãã«ã®ã³ã³ãã©ã€ã¢ã³ã¹ããã§ãã¯ãããŸãã äœããã®çç±ã§ã¹ãã¬ãŒãžæ§é ãããŒã¿ã¢ãã«ãšäžèŽããªãå Žåãé倧ãªã©ã³ã¿ã€ã ãšã©ãŒãçºçããŸãïŒã€ãŸããã¢ããªã±ãŒã·ã§ã³ã¯åäœäžèœã«ãªããŸãïŒã ããããããŒã¿ã¢ãã«ã倿Žããå¿
èŠãããå Žå-ã³ã¢ããŒã¿ç§»è¡ã¡ã«ããºã ã䜿çšããå¿
èŠãããå Žåãããã¯è€éããå¢ãå¥åã®ãããã¯ã§ããããã®èšäºã®ãã¬ãŒã ã¯ãŒã¯ã§ã¯èæ
®ããŸããã å¥ã®ãªãã·ã§ã³ããããŸã-ããã€ã¹ïŒãŸãã¯ãšãã¥ã¬ãŒã¿ãŒïŒããã¢ããªã±ãŒã·ã§ã³ãåé€ããã ãã§ãã¢ããªã±ãŒã·ã§ã³ãèµ·åãããšãCore Dataã¯æ°ããæ§é ã§æ°ããã¹ãã¬ãŒãžãäœæããŸãã æããã«ããã®ã¡ãœããã¯ã¢ããªã±ãŒã·ã§ã³éçºã®æ®µéã§ã®ã¿é¢é£ããŸãã
ãã®èšäºãç· ããããããã«ããã®ã°ã©ãã£ã«ã«è¡šçŸãèŠãŠã¿ãŸããã;ãããè¡ãã«
㯠ãããŒã¿ã¢ãã«ãšãã£ã¿ãŒïŒäžã«ããïŒã®
ãšãã£ã¿ãŒã¹ã¿ã€ã«ã ã°ã©ãã®äœçœ®ã«åãæ¿ããŸãã

屿§ã§äœæãããšã³ãã£ãã£ãšããã®ãã¹ãŠã®é¢ä¿ãã°ã©ãã£ãã¯æ§é ã®åœ¢ã§è¡šç€ºãããŸãã 端ã«éåžžã®ç¢å°ãä»ããç·ã¯ã
1ã€ã®æ¥ç¶ãæå³ããäºéç¢å°
-To Manyãæå³ããŸãã ã°ã©ãã£ãã¯ãã¥ãŒã¯ãäœç©ã¢ãã«ãããã²ãŒãããã®ã«åœ¹ç«ã¡ãŸãã
æåã®éšåã¯çµããã§ãã
次ã®èšäºã§ã¯å€ãã®ã³ãŒãããããŸãããªããžã§ã¯ãèªäœãäœæãããããããªã³ã¯ãã
NSEntityDescription
ãš
NSManagedObject
ãã³ã¢ããŒã¿ã®äœ¿ããããã倧å¹
ã«åäžããããã«ããŒã¯ã©ã¹ãäœæããŸãã
ãã®ãããžã§ã¯ãã¯githubã«ãããŸã