æ¬æ¥ããã€ã±ã«ã»ããªããŒããšãããŒãã»ã¯ãŒããŒã®æ¬ãiOSçšã®ããã³ã¢ããŒã¿ãã«é¢ããå®è·µçãªæŒç¿ã§äžé£ã®è¬çŸ©ãæžãå§ããããšæããŸãã åç« ã«ã¯ãçè«çããã³å®çšçãªéšåãå«ãŸããŸãã
å 容ïŒ
- ç« çªå·1ã ã¯ããã« ïŒ å®çšçãªéšå ïŒ
- ç« çªå·2ã ãã¹ã¿ãŒã³ã¢ããŒã¿ ïŒ å®è·µéš ïŒ
- ç« çªå·3ã ããŒã¿ã¹ãã¬ãŒãžïŒSQLiteããã³ãã®ä»ã®ãªãã·ã§ã³
- ç« çªå·4ã ããŒã¿ã¢ãã«ã®äœæ
- 第5ç« ã ããŒã¿ãªããžã§ã¯ãã®æäœ
- 第6ç« çµæã»ããã®åŠç
- ç« çªå·7ã ããã©ãŒãã³ã¹ãšã¡ã¢ãªã®ãã¥ãŒãã³ã°
- 第8ç« ã ããŒãžã§ã³ç®¡çãšç§»è¡
- ç« çªå·9ã NSFetchedResultsControllerã䜿çšããŠããŒãã«ã管çãã
- ç« çªå·10ã é«åºŠãªã¢ããªã±ãŒã·ã§ã³ã§ã³ã¢ããŒã¿ã䜿çšãã
ãšã³ããªãŒ
æ¥åžžç掻ãåé¡ã®è§£æ±ºã«åœ¹ç«ã€èŠäºãªã€ã³ã¿ãŒãã§ã€ã¹ãåãããŠãŒã¶ãŒã¢ããªã±ãŒã·ã§ã³ãäœæã§ããŸãããã¢ããªã±ãŒã·ã§ã³å ã®ããŒã¿ãæ£ããè¡šçŸããªããšãã¢ããªã±ãŒã·ã§ã³ã®ä¿å®ãé£ãããªããããã©ãŒãã³ã¹ãäœäžããæéãçµã€ãšå®å šã«äœ¿çšã§ããªããªãå¯èœæ§ããããŸãã ãã®ç« ã§ã¯ãã¢ããªã±ãŒã·ã§ã³ãå°ç¡ãã«ããªãããã«ã¢ãã«ïŒããŒã¿ïŒãèšèšããå¿ èŠãããæ¹æ³ãèŠãŠãããŸãã
ããŒã¿ããŒã¹èšèš
ã¢ã¡ãªã«ã®å²åŠè ã©ã«ãã»ãŠã©ã«ãã»ãšããŒãœã³ã¯ãã€ãŠèšã£ãïŒãæããªäžè²«æ§ã¯ãå°ããªå¿ã®ãããŽããªã³ã§ããïŒäœãã«ç¶ããŠæããããã¯å€ãã®æãè ã§ãïŒã å€ãã®å Žåã人ã ã¯ãã®ããšããã䜿çšããŠãæ»æãã身ãå®ãã詳现ã«ã€ããŠä»è ããã®è³ªåãããŸãã Core Dataã¯ããŒã¿ããŒã¹ã§ã¯ãªããšå®æçã«äž»åŒµããŸãããããŒã¿ããŒã¹ã®ããã«æ±ããŸããããã®é€ã«èœã¡ãªãããšãé¡ã£ãŠããŸãïŒèè ïŒãäœããã¢ãã«ã®ããã«æ©ãå Žåãããã¯ã¢ãã«ãããã¯ã¢ãã«ã§ããã ãã®ã»ã¯ã·ã§ã³ã§ã¯ãã¢ããªã±ãŒã·ã§ã³ã®ããŒã¿æ§é ãèšèšããæ¹æ³ãæ€èšãããã®ããã»ã¹ãšãªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ã®æ§é ãèšèšããããã»ã¹ãšã®é¡äŒŒç¹ãæãããšã§ãè°è«ã ãã§ãªããæçµçãªçµæã«ã圹ç«ã¡ãŸãã ãã¡ãããããã€ãã®ç¹ã§é¡æšã¯ãããŸããããè°è«ã®äžã§ãããã®ç¹ãææããããšããŸãã
ã³ã¢ããŒã¿ã®ãšã³ãã£ãã£ã¯ããªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ã®ããŒãã«ãšåãããã«èŠããŸãã å±æ§ã¯ããŒãã«ã®ãã£ãŒã«ãã§ãããé¢ä¿ã¯äž»ããŒãšå€éšããŒã«ããçµåã§ããããšã³ãã£ãã£èªäœã¯ããŒãã«å ã®ãŸãã«ã¬ã³ãŒãã§ãã ããŒã¿ã¢ãã«ãSQLiteã¿ã€ãã®ã¹ãã¬ãŒãžã«ãéç³ããããŠããå ŽåãCore Dataã¯äžèšããã³ç¬¬2 /第3ç« ã§èª¬æããæ¹æ³ã§ãã¹ãŠãå®éã«å®è£ ããŸãã ãã ããããŒã¿ã¯ã¡ã¢ãªããŸãã¯äœããã®ãã¡ã€ã«ïŒã¢ãããã¯ã¹ãã¬ãŒãžïŒã«ä¿åã§ããããšãå¿ããªãã§ãã ãããããã«ã¯ããŒãã«ãšãã£ãŒã«ããäž»ããŒããŸãã¯å€éšããŒã¯ãããŸããã Core Dataã¯ã䜿çšãããã¹ãã¬ãŒãžã®ã¿ã€ãããããŒã¿æ§é ãæœè±¡åããããšã§ãèšèšãšããŒã¿ãšã®çžäºäœçšã®å©äŸ¿æ§ãšæ±çšæ§ãå®çŸããŠããŸãã Core Dataãããªãã®å¿ãæãããCore Dataã§åäžã®å šäœã«ããŒãžããŸããCoreDataã§åãæããããæé©ã§ãªãããŒã¿æ§é ã䜿çšããŠå£ãããã©ãã«ãªã£ãŠããŸããŸãã
ã³ã¢ããŒã¿ã®ç 究ãå§ããã°ããã§ãæåã®ããŒã¿ã¢ãã«ãäœæããŠããåå¿è ã¯ãããŒã¿ããŒã¹æ§é ã®åŸæ¥ã®ã¢ããªã³ã°ã§äœ¿çšããŠããããã«ããšã³ãã£ãã£ã®ãã©ã€ããªããŒãäœæããŠè²¬ä»»ãè² ãããšãã§ããªãããšã«åžžã«constantlyããŸãã Core Dataã«ã¯èªåã€ã³ã¯ãªã¡ã³ãããŒã¯ãããŸããããããã¯ããã§ã¯å¿ èŠãªãããã§ãã ã³ã¢ããŒã¿ã¯ãè¿œå ãããåãªããžã§ã¯ãïŒç®¡ç察象ãªããžã§ã¯ãïŒã«å¯ŸããŠäžæã®ããŒãäœæãã責任ãè² ããŸãã äž»ããŒã¯ãå€éšããŒãååšããªãããšãæå³ããŸãããCoreDataã¯ããšã³ãã£ãã£èªäœéã®é¢ä¿ã管çããå¿ èŠãªçµåãå®è¡ããŸãã ããã«ãããŠïŒ äž»ããŒãšå€éšããŒã宣èšããããšã«äžå¿«æãæããã®ããããŠãã ããïŒ
ããªãã泥沌ã«åŒããã蟌ãããšãã§ããå¥ã®å Žæã¯ãå€å¯Ÿå€ã®é¢ä¿ã·ãã¥ã¬ãŒã·ã§ã³ã§ãã ãªãŒã°ãããŒãžã£ãŒã¢ããªã±ãŒã·ã§ã³ã§ã¯ããã¬ãŒã€ãŒãç°ãªãããŒã ã«æå±ã§ããããšãæ³åããŠãã ããã ãã®å ŽåãåããŒã ã«ã¯å€ãã®ãã¬ãŒã€ãŒãããŠãåãã¬ãŒã€ãŒã¯ç°ãªãããŒã ã§ãã¬ãŒã§ããŸãã åŸæ¥ã®ãªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ãäœæããå Žåã3ã€ã®ããŒãã«ããããŸãã1ã€ã¯ããŒã çšããã1ã€ã¯ãã¬ãŒã€ãŒçšããã1ã€ã¯ã©ã®ãã¬ãŒã€ãŒãšããŒã ãå±ãããã远跡ããããã§ãã åæã«ãCore Dataã§ã¯ããã¬ãŒã€ãŒãšããŒã ã®2ã€ã®ãšã³ãã£ãã£ãåãã§ãããéåžžã®ãã§ãã¯ããŒã¯ãèšå®ããããšã§å€å¯Ÿå€ã®é¢ä¿ãæ§æãããŸãã ãã ããã³ã¢ããŒã¿ã§ã¯ããå éšãã§3ã€ã®ããŒãã«ZTEAMãZPLAYERãZ1TEAMSã䜿çšããŠãããå®è£ ããŠããŸããããããã¯å®è£ ã®è©³çŽ°ã§ãã 3çªç®ãŸãã¯4çªç®ã®ããŒãã«ãããããšãç¥ãå¿ èŠã¯ãããŸãããCoreDataããããåŠçããããè¯ãçµæããããããŸãã
ãã³ã ïŒããŒã¿ã®ä¿ç®¡ã¡ã«ããºã ã§ã¯ãªããããŒã¿ã«æ³šæããŠãã ããã
ãªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ã®æ£èŠå
ãªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ã®èšèšçè«ã¯ãæ£èŠåïŒæ£èŠåããã»ã¹ïŒãšåŒã°ããããŒã¿ã¢ããªã³ã°ããã»ã¹ãçµã¿åããããã®ã§ãããã®ç®çã¯ãåé·æ§ãåæžãŸãã¯å®å šã«æé€ããããŒã¿ããŒã¹å ã®ããŒã¿ãžã®å¹æçãªã¢ã¯ã»ã¹ãæäŸããããšã§ãã
æ£èŠåããã»ã¹ã¯5ã€ã®ã¬ãã«ïŒãã©ãŒã ïŒã§æ§æãããã¬ãã«6ã§äœæ¥ãç¶è¡ãããŸãã ãããããæåã®5ã€ã®åœ¢åŒã®å®çŸ©ã奜ãã®ã¯æ°åŠè ã ãã§ãããããããç解ã§ããã®ã¯åœŒãã ãã§ãã ãããã¯æ¬¡ã®ããã«ãªããŸãã
ãé¢ä¿Rã¯ãRã«MVDãååšããå Žåãããšãã°A->-> Bã®å Žåã«ã®ã¿ãRã®ãã¹ãŠã®å±æ§ãæ©èœçã«Aã«äŸåããå Žåã«ã®ã¿ã4çªç®ã®æ£èŠåœ¢ïŒ4NFïŒã«ãªããŸãã Rã®äŸåé¢ä¿ïŒFDãŸãã¯MVDïŒã®ã¿ãK-> Xã®åœ¢åŒã§ãïŒã€ãŸããåè£ããŒKããä»ã®å±æ§Xãžã®æ©èœçäŸåé¢ä¿ïŒã åçïŒRãBCNFã«ãããRã®ãã¹ãŠã®MVDãå®éã«FDã§ããå ŽåãRã¯4NFã«ãããŸãã
ïŒcïŒ www.databasedesign-resource.com/normal-forms.html
ãã¹ãŠã®ãã©ãŒã ã説æããã®ã«ååãªããŒãžãããã¹ãŠã®éåžžã®ãã©ãŒã ã®å®çŸ©ã調ã¹ãŠãã®æ¬è³ªã説æããããšãã欲æ±ããããŸããã 代ããã«ããã®ã»ã¯ã·ã§ã³ã§ã¯ãã³ã¢ããŒã¿ã«é¢ããåæšæºãã©ãŒã ã«ã€ããŠèª¬æããèšèšã®ãã³ããæäŸããŸãã ç¹å®ã®æšæºåœ¢åŒã«åŸãã«ã¯ãããã«å è¡ãããã¹ãŠã®æšæºåœ¢åŒã«åŸãå¿ èŠãããããšã«æ³šæããŠãã ããã
æåã®æ£èŠåœ¢ïŒ1NFïŒã«å¯Ÿå¿ããããŒã¿ããŒã¹ã¯ãæ£èŠåãããŠãããšèŠãªãããŸãã ãã®åœ¢åŒïŒã¬ãã«ïŒã®æ£èŠåã«åŸãã«ã¯ãããŒã¿ããŒã¹ã®åã¬ã³ãŒãã«åãæ°ã®ãã£ãŒã«ããå¿ èŠã§ãã Core Dataã®ã³ã³ããã¹ãã§ã¯ãããã¯ã管ç察象ãªããžã§ã¯ãã«ç¹å®ã®ïŒäºåå®çŸ©ãããïŒæ°ã®å±æ§ãå¿ èŠã§ããããšãæå³ããŸãã Core Dataã§ã¯ç°ãªãæ°ã®å±æ§ãæã€1ã€ã®ãšã³ãã£ãã£ãäœæã§ããªããšããäºå®ã«åºã¥ããŠãCore Dataã®ã¢ãã«ã¯èªåçã«æ£èŠåããããšçµè«ä»ããããšãã§ããŸãã
2çªç®ã®æšæºåœ¢åŒïŒ2NFïŒãš3çªç®ã®æšæºåœ¢åŒïŒ3NFïŒã¯ãéããŒãã£ãŒã«ããšããŒãã£ãŒã«ãã®é¢ä¿ã«é¢é£ããéããŒãã£ãŒã«ããå±ããããŒãã£ãŒã«ãã«é¢ããäºå®ã§ããå¿ èŠããããŸãã Core Dataã®ããŒã¯æ°ã«ããªãã®ã§ããã®è³ªåã¯åé€ãããŸãã ãã ãããšã³ãã£ãã£ã®ãã¹ãŠã®å±æ§ããä»ã®äœãã§ã¯ãªãããã®ç¹å®ã®ãšã³ãã£ãã£ã説æããããšã確èªããå¿ èŠããããŸãã ããšãã°ããã©ãŒã ã®è²ã¯ãã¬ãŒã€ãŒã§ã¯ãªãããŒã ã®ç¶æ ãè¡šããããPlayerãšã³ãã£ãã£ã«ã¯uniformColorå±æ§ãèšå®ããªãã§ãã ããã
次ã®2ã€ã®æšæºåœ¢åŒã4çªç®ã®æšæºåœ¢åŒïŒ4NFïŒãš5çªç®ã®æšæºåœ¢åŒïŒ5NFïŒã¯ãã³ã¢ããŒã¿ã®äžçã§åã圢åŒãšèŠãªãããšãã§ããŸãã ãããã¯ãèšè¿°ãããããŒã¿ã®åé·æ§ãåæžãŸãã¯æé€ãã è€æ°ã®å€ãæã€å±æ§ãåå¥ã®ãšã³ãã£ãã£ã«è»¢éãããšã³ãã£ãã£éã«å€å¯Ÿå€ã®é¢ä¿ãäœæããããã«ä¿ããŸãã 4NFã³ã¢ããŒã¿ã«é¢ããŠã¯ããã©ãŒã ã«ã¯ããšã³ãã£ãã£ãè€æ°ã®å€ãæã€ããšãã§ããå±æ§ãæã€ã¹ãã§ã¯ãªãããšãèšèŒãããŠããŸãã 代ããã«ããããã®å±æ§ãå¥ã®ãšã³ãã£ãã£ã«ç§»åãããšã³ãã£ãã£éã«å€å¯Ÿå€ã®é¢ä¿ãäœæãã䟡å€ããããŸãã LeagueManagerã¢ããªã±ãŒã·ã§ã³ã®ããŒã ãšãã¬ãŒã€ãŒã䜿çšããã¢ããªã±ãŒã·ã§ã³ã®äŸãèããŠã¿ãŸãããã 4ã€ã®æšæºåœ¢åŒãš5ã€ã®æšæºåœ¢åŒã«éåããããŒã¿ã¢ãã«ã¯ãè¿œå ã®å±æ§ãæã€1ã€ã®ãšã³ãã£ãã£ïŒããŒã ïŒã§æ§æãããŸã-ãã¬ãŒã€ãŒã 次ã«ãåãã¬ãŒã€ãŒã®æ°ããããŒã ã€ã³ã¹ã¿ã³ã¹ãäœæããŸãããã®çµæãäœåãªïŒäžèŠãªïŒããŒã ãªããžã§ã¯ããããã€ããããŸãã 代ããã«ãLeagueManagerã¢ããªã±ãŒã·ã§ã³ã§äœ¿çšãããããŒã¿ã¢ãã«ã§ã¯ãå€å¯Ÿå€ã®é¢ä¿ãããŒã ãšã³ãã£ãã£ãšçµåããPlayerãšã³ãã£ãã£ãäœæãããŸãã
ã¢ããªã³ã°ããã»ã¹ã§ã¯ããããã®åçŽãªã«ãŒã«ãå¿ããªãã§ãã ããã ããšãã°ãLeagueManagerã¢ããªã±ãŒã·ã§ã³ã®ããŒã¿ã¢ãã«ã§ã¯ãTeamãšã³ãã£ãã£ã®uniformColorå±æ§ã¯æ£èŠåããæ©èœãè¡šããŸãã ãã©ãŒã ã®è²ã®ååã¯æéã®ã»ããã§ããã€ãŸããColorãšããååã®è¿œå ã®ãšã³ãã£ãã£ãäœæã§ããŸããããã¯ãnameå±æ§ãæã¡ãTeamãšã³ãã£ãã£ãšã®å€å¯Ÿ1ã®é¢ä¿ã§æ¥ç¶ãããŸãã
Xcodeã§ã¢ãã«ãã¶ã€ããŒã䜿çšãã
äžéšã®éçºè ã¯ãããã©ã«ãã§æäŸãããéçºããŒã«ã䜿çšããããšã«åçŽã«åæããŸãã ä»ã®ãã®ã¯ãçŸåšã®ãã®ããããã«å£ããšæãããå Žåã®ã¿ããŒã«ãäœæããŸãã ä»ã®äººã¯é åºã«ç¬èªã®ããŒã«ãäœæããããšã䞻匵ããŸãã ç§ãã¡ã¯èªåãã¡ãäœã£ãããŒã«ã ãã䜿çšããéçºè ã®æåŸã®ã«ããŽãªãŒã«åé¡ãããŸãã ç§ãã¡ã¯èªåãã¡ãäœã£ã補åãèªãã«æã£ãŠãããæã«ã¯å°ããªåå©ãšéçºæéã®ç¯çŽã§å¹žéãç¥ããŸãã ããŒã«ã®éçºã«è²»ãããæéã¯ã楜ãã¿ã®ããã®ãéã³æéãã®ã«ããŽãªã«å«ãŸããŠããããã決ããŠèæ ®ããŸããã ããããã©ããªã«é©ããããããŸããããããããXcodeãè¯ãä»äºãããŠããããã«ãCore Dataã®ç¬èªã®ã¢ãã«ãã¶ã€ããŒãæžãããšã¯ãããŸããã§ããã éçºç°å¢ãžã®å®å šãªçµ±åãããã¯ããããããŒã«ãè¶ ããããšã¯ã§ããªãã§ãããã ããã«ãXcodeã«ã¯ã°ã©ãã£ã«ã«ããŒã¿ã¢ãã«ã·ãã¥ã¬ãŒã¿ãçµã¿èŸŒãŸããŠãããããèšèšãã¯ããã«ç°¡åã«ãªããŸãã åã®ç« ã§ã¯ããã§ã«å¯ŸåŠããå¿ èŠããããŸããã ãã®ã»ã¯ã·ã§ã³ã§ã¯ãã³ã¢ããŒã¿ã®ä»çµã¿ã詳ããèŠãŠããã䜿çšããããŒã«ã«æ³šç®ããŸãã
ãã®ã»ã¯ã·ã§ã³ã«ã¯ã³ãŒãã¯èšè¿°ãããŸããã 代ããã«ãããŒã¿ã¢ãã©ãŒã®ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã«éäžããŸãã ããŒã¿ã¢ãã«ããããžã§ã¯ãã«è¿œå ããã«ã¯ãã¡ãã¥ãŒé ç®ãéžæããŸãã[ãã¡ã€ã«]-> [æ°èŠ]-> [æ°èŠãã¡ã€ã«]ãéžæãããŠã£ã³ããŠã®å·ŠåŽã§[ã³ã¢ããŒã¿]ã»ã¯ã·ã§ã³ãéžæããŸãã ãã¡ã€ã«ã«ã¯ãããŒã¿ã¢ãã«ããããã³ã°ã¢ãã«ãNSManagedObjectãµãã¯ã©ã¹ã®3ã€ã®ã¿ã€ãããããŸãã ãããã³ã°ã¢ãã«ã¯ãããããŒã¿ã¢ãã«ããå¥ã®ããŒã¿ã¢ãã«ãžã®ããŒã¿ç§»è¡ã«åœ¹ç«ã¡ãŸãïŒè©³çŽ°ã«ã€ããŠã¯ã第8ç« ãåç §ããŠãã ããïŒã ããŒã¿ã¢ãã«ã®ã¿ã€ããéžæããããŒã¿ã¢ãã«ã®ååãæå®ããŠä¿åããŸãã
æ°ããäœæãããã¢ãã«ãã¡ã€ã«Xcodeãéããšãããžã¥ã¢ã«ã¢ãã«ãšãã£ã¿ãŒã§éããŸãã å€æ°ã®ãã¿ã³ãšãªãã·ã§ã³ãååšãããšãæ··ä¹±ããå¯èœæ§ããããŸãã 次ã®å³ã¯ãã·ãã¥ã¬ãŒã·ã§ã³ã§äœ¿çšãããèŠçŽ ãšãã®èª¬æã瀺ããŠããŸãã
ã¢ãã«ãšãã£ã¿ãŒã䜿çšãããšããšã³ãã£ãã£ãããããã£ãé¢ä¿ïŒé¢ä¿ïŒãã¯ãšãªãããã³ããŒã¿ã¢ãã«æ§æãç°¡åã«åãæ¿ããããšãã§ããŸãã ããŒã¿ã¢ãã«ã衚瀺ããããã®ãªãã·ã§ã³ãåãæ¿ããããšãå¯èœã§ãïŒã°ã©ã圢åŒã®è¡šç€ºããŸãã¯ããŒãã«ãã¥ãŒã
ããŒã¿ã¢ãã«ãè°è«ããããšãããé¢çœãããããã«ãLeague Managerã¢ããªã±ãŒã·ã§ã³ã§éçºããã¢ãã«ãéãããšãææ¡ããŸãã
ã芧ã®ãšãããããã©ã«ãã§ã¯ãXcodeã¯ãšã³ãã£ãã£ã衚圢åŒã§è¡šç€ºããŸãã ã¢ãã«ã®ã°ã©ãã£ã«ã«è¡šçŸã䜿çšããæ¹ã䟿å©ãªå Žåã¯ããšãã£ã¿ãŒã®å³äžéšåã«ããããšãã£ã¿ãŒã¹ã¿ã€ã«ãã®ç¢æã®äžã«ãããã°ã©ããã¥ãŒããã¿ã³ãã¯ãªãã¯ããå¿ èŠããããŸãã
ã°ã©ãã£ãã¯è¡šçŸã¯ãã¶ã€ããŒã«ãšã£ãŠéŠŽæã¿ã®ãããã®ã§ããå¿ èŠãããããšã³ãã£ãã£ãšãšã³ãã£ãã£éã®é¢ä¿ãèšè¿°ããæšæºçãªãã®ã§ãã ããŒã ãšã³ãã£ãã£ããPlayerãžã®2ã€ã®ç¢å°ã®æ¥ç¶ãããããšã«ãã§ã«æ°ä»ããŠããã§ãããã ããã¯ãé¢ä¿ã1察å€ã®é¢ä¿ã§ããããã§ãã ããŒã ã«ã¯è€æ°ã®ãã¬ãŒã€ãŒãå«ããããšãã§ããŸãã ãã¬ã€ã€ãŒããããŒã ãžã®ãã£ãŒãããã¯ã¯1察1ã®é¢ä¿ã§ãããããã«å¿ããŠåäžã®ç¢å°ã§ç€ºãããŸãã ãã¬ãŒã€ãŒã¯1ã€ã®ããŒã ã«ã®ã¿æå±ã§ããŸãã
ã¢ãã«ã®ããžã¥ã¢ã«ãã¶ã€ããŒã䜿çšããçµéšããããšã³ãã£ãã£ãšå±æ§ã®ç·šéã¯è¡šåœ¢åŒã§ã¯ããã«äŸ¿å©ã§ãããã°ã©ãã£ã«ã«ãªè¡šçŸã¯ãããã®éã®é¢ä¿ãèŠèŠåããã®ã«é©ããŠãããšç¢ºä¿¡ã§ããŸãã ãã ããç¬èªã®ã¢ãããŒããããå ŽåããããŸãã
ããããã£ãŸãã¯ãšã³ãã£ãã£ãéžæãããšããããã«é¢ãã詳现æ å ±ãååŸã§ããŸãã ããšãã°ã次ã®å³ã§ã¯ãPlayerãšã³ãã£ãã£ãéžæãããŠããŸãã å³äžã«ã¯ãPlayerãšã³ãã£ãã£ã«é¢ãã詳现ã衚瀺ãããŸãã 圌女ã®ååãNSManagedObjectã¯ã©ã¹ãæœè±¡ã¯ã©ã¹ã§ã¯ãªããæ¬ èœããŠãã芪ã¯ã©ã¹ã ããããã£ãéžæãããšãããã«ã®å€èŠ³ãå€ãããããããã£ã®ããããã£ã衚瀺ãããŸãã é»åã¡ãŒã«å±æ§ãéžæãããšãããã«ã®å€èŠ³ã¯æ¬¡ã®ããã«å€ãããŸãã
+é»åã¡ãŒã«å±æ§ãåŒã³åºãããŸã
+ãªãã·ã§ã³ã§ã
+äžæçã§ãã€ã³ããã¯ã¹å¯èœã§ããªã
+æåå
+æå°é·ããã³æ倧é·ã«å¶éã¯ãããŸãã
+ããã©ã«ãå€ãªã
+ãã€ã³ããããæ£èŠè¡šçŸãªã
+ Spotlightã«ãã£ãŠã€ã³ããã¯ã¹åãããŠããªããã£ãŒã«ã
+ãã£ãŒã«ãå€ã¯å€éšã¬ã³ãŒãã«ä¿åãããŸãã
Playerãšã³ãã£ãã£ã®ããŒã ã³ãã¥ãã±ãŒã·ã§ã³ã«åãæ¿ãããšãããã«ã次ã®ããã«å€æŽãããŸãã
+å±æ§ããŒã ãšåŒã°ãã
+æçµïŒé¢é£ïŒãšã³ãã£ãã£ã¯ããŒã ãšã³ãã£ãã£ã§ã
+ãã£ãŒãããã¯ãããããã¬ã€ã€ãŒãšåŒã°ããŸã
+ãªãã·ã§ã³ããã ãäžæçã§ã¯ãªã
+ 1察å€ã®é¢ä¿ã§ã¯ãªã
+æå°ããã³æ倧æ°ã¯1ã§ã
+䜿çšãããNullifyåé€ã«ãŒã«
+ Spotlightã«ãã£ãŠã€ã³ããã¯ã¹åãããŠããªããã£ãŒã«ã
+ãã£ãŒã«ãå€ã¯å€éšã¬ã³ãŒãã«ä¿åãããŸãã
Playerã®æ¬è³ªãã芧ãã ããã
ãšã³ãã£ãã£ã¯ååã§å®çŸ©ãããŸãã Core Dataã䜿çšãããšã管ç察象ãªããžã§ã¯ãã®ä»£æ¿å®è£ ãæäŸããããã«NSManagedObjectããç¶æ¿ã§ããŸãã NSManagedObjectã¯ã©ã¹ã®ãµãã¯ã©ã¹ãäœæãããããç¹å®ã®ãšã³ãã£ãã£ã«é¢é£ä»ããå ŽåããEntityãã»ã¯ã·ã§ã³ã®ãClassããã£ãŒã«ãã§æ°ããã¯ã©ã¹ã®ååãæå®ããå¿ èŠããããŸãïŒäžã®ç»åïŒã
å±æ§ã®è¡šç€ºãšç·šé
Xcodeã®ãå±æ§ãã»ã¯ã·ã§ã³ã§å±æ§ãéžæãããšãå³åŽã®ããã«ã®å€èŠ³ãå€ãããéžæããå±æ§ã®ãã¹ãŠã®æ å ±ã衚瀺ãããŸãã 次ã®è¡šã«ãå±æ§ããããã£ã®ååãšãã®ç®çã瀺ããŸãã
ãåå | 説æ |
---|---|
ãåå | å±æ§å |
äžæç | Core Dataã¯ãã®å±æ§ãä¿åããŸããã ã«ã¹ã¿ã ã¿ã€ããŸãã¯ã«ã¹ã¿ã ã¿ã€ãããµããŒãããã«ã¯ããã®ã¿ã€ãã®ããããã£ã2çªç®ã®å±æ§ãšçµã¿åãããŠäœ¿çšââãããšäŸ¿å©ã§ãã ã«ã¹ã¿ã ã¿ã€ãã«ã€ããŠã¯ããã®ç« ã®åŸåã§èª¬æããŸãã |
ãªãã·ã§ãã« | ãªãã·ã§ã³ã®å±æ§ã¯nilã§ãã ãªãã·ã§ã³ã®å±æ§ã¯ãnil以å€ã®å€ããšãå¿ èŠããããŸãã |
ã€ã³ããã¯ã¹ä»ã | ã€ã³ããã¯ã¹ä»ãå±æ§ã¯æ€çŽ¢ãé«éã§ãããããå€ãã®ã¹ãã¬ãŒãžã¹ããŒã¹ãå æããŸãã |
å±æ§ã¿ã€ã | å±æ§ã¿ã€ãã éžæããã¿ã€ãã«å¿ããŠãç¹å®ã®æ€èšŒïŒæ€èšŒïŒãã£ãŒã«ãã衚瀺ãããŸãã |
æ€èšŒ | éžæããæåååã®æå°é·ãšæ倧é·ããŸãã¯éžæããæŽæ°åã®æå°/æ倧å€ãèšå®ããããã«äœ¿çšããŸãã |
æå°é· | æå°é·ã®å€ã®ãã§ãã¯ãæå¹ã«ãããã§ãã¯ããã¯ã¹ |
æå€§é· | æ倧é·å€ã®ãã§ãã¯ãæå¹ã«ãããã§ãã¯ããã¯ã¹ |
æäœ | æå°å€ãã§ãã¯ãæå¹ã«ãããã§ãã¯ããã¯ã¹ |
æ倧 | æ倧å€ãã§ãã¯ãæå¹ã«ãããã§ãã¯ããã¯ã¹ |
ããã©ã«ãå€ | å€ãæå®ãããŠããªãå Žåã®ãã®å±æ§ã®ããã©ã«ãå€ã |
ç»é² äŸ | ããŒã¿ãæ€èšŒããããã®æ£èŠè¡šçŸ |
ãªã³ã¯ã®è¡šç€ºãšç·šé
å±æ§æ å ±ã衚瀺ãããšããšåãããã«ããªã³ã¯ãéžæããããšã§ãªã³ã¯ã®ããããã£ã衚瀺ã§ããŸãã
ãªã³ã¯ã«ã¯ããã€ãã®ããããã£ããããŸãã ãŸããååãšæéã®ãšã³ãã£ãã£ïŒæ¥ç¶ãå±ãããšã³ãã£ãã£ïŒããããŸãã æåŸã®ãšã³ãã£ãã£ã¯ããªã³ã¯ãæããªããžã§ã¯ãã®ã¿ã€ããèšè¿°ããŸãã Playerãšã³ãã£ãã£ã®å ŽåãããŒã é¢ä¿ã¯Teamãšã³ãã£ãã£ãæãããšãæåŸ ãããŠããŸãã ã³ã¢ããŒã¿ã¢ãŒããã¯ãã¯ãåãªã¬ãŒã·ã§ã³ã·ããã§éã®åçºãã€ãŸãå察æ¹åã«åãããããªã¬ãŒã·ã§ã³ã·ããã瀺ãããšã匷ããå§ãããŸãã ããšãã°ãPlayerãšã³ãã£ãã£ã¯Teamãšæ¥ç¶ããŠãããããå®è£ ã«åºã¥ããŠãæšå¥šäºé ã«åºã¥ããŠãTeamãPlayerãšæ¥ç¶ããå¿ èŠããããŸãã å®éã«ããã£ãŒãããã¯ãå¿ãããã確ç«ããããªãå Žåã¯ãã³ã³ãã€ã©ãŒã«ãã£ãŠèŠåãçæãããŸãã è¿œå ã®2ã€ã®ããããã£ãå±æ§ã«äœ¿çšã§ããŸãïŒTransientããã³Optionalã äžæãªã³ã¯ã¯ãä¿åæäœäžã«ã¹ãã¬ãŒãžã«ä¿åãããŸããã ããŒã ã®ã³ãã¥ãã±ãŒã·ã§ã³ãäžæçãªã¿ã€ãã®å Žåãã¢ããªã±ãŒã·ã§ã³ãä¿åããŠããåèµ·åãããšããã¬ãŒã€ãŒãæå±ããããŒã ã«é¢ããæ å ±ã倱ãããŸãã Playerãªããžã§ã¯ãã¯ä¿åãããŸãããTeamãªããžã§ã¯ããšã®é¢é£ä»ãã¯ä¿åãããŸããã äžæçãªéä¿¡ã¯ããã¹ã¯ãŒããã¢ããªã±ãŒã·ã§ã³ã®æäœäžã«ååŸããæ å ±ããååŸãããã®ãªã©ãå®è¡æã«å€ãèšå®ããå¿ èŠãããå Žåã«åœ¹ç«ã¡ãŸãã æ¥ç¶ããªãã·ã§ã³ã®å Žåãåã«nilã«èšå®ã§ããããšãæå³ããŸãã ããšãã°ããã¬ãŒã€ãŒã«ã¯ããŒã ããªãå ŽåããããŸãã
éä¿¡ã®å€é床ã«ããããœãŒã¹ãªããžã§ã¯ããé¢é£ä»ããããšãã§ããæéãªããžã§ã¯ãã®æ°ïŒ1ã€ãŸãã¯å€æ°ïŒã決ãŸããŸãã ããã©ã«ãã§ã¯ãé¢ä¿ã¯k-oneã§ããã€ãŸãããœãŒã¹ãªããžã§ã¯ãã¯1ã€ã®æçµã«ã®ã¿é¢é£ä»ããããšãã§ããŸãã ããã¯ãPlayerãšã³ãã£ãã£ã«å¯ŸããŠããŒã ã䜿çšããäŸã®å Žåã®ã¿ã§ãããã¬ãŒã€ãŒã¯ãããŒã ã1ã€ããæã€ããšãã§ããŸããã ãã ããããŒã ã«ã¯å€ãã®ãã¬ãŒã€ãŒãå«ããããšãã§ãããããTeamãšã³ãã£ãã£å ã®ãã¬ãŒã€ãŒé¢ä¿ã«ã¯å€å¯Ÿå€ã®é¢ä¿ããããŸãã ãããã®å€ïŒå€ãã®åŽããïŒã¯ãïŒNSSetïŒãªããžã§ã¯ãã®ã»ãããšããŠè¡šãããŸãã éä¿¡ã®å€é床ã¯ãéä¿¡äžã®ãšã³ãã£ãã£ã®æéã»ããã®ãã¯ãŒãè¡šãæå°å€ãšæ倧å€ãå€æŽããããšã§ã決å®ã§ããŸãã
çµè«ãšããŠãCore Dataã¯ãå ã®ãªããžã§ã¯ããåé€ãããšãã«æçµãªããžã§ã¯ããã©ãåŠçããããç¥ãããã«ããªã³ã¯è§£é€ã®ã«ãŒã«ã䜿çšããŸãã Core DataããµããŒãããã¢ã³ã€ã³ã¹ããŒã«ãªãã·ã§ã³ã¯å€æ°ãããŸãã åé€ã«ã¯ãã¢ã¯ã·ã§ã³ãªããç¡å¹åãã«ã¹ã±ãŒããæåŠãªã©ã®çš®é¡ããããŸãã ãã®ç« ã®ãæ§æã«ãŒã«ãã»ã¯ã·ã§ã³ã§ã¯ãåé€ã«ãŒã«ãšãã®æå³ã«ã€ããŠèª¬æããŸãã
ã¯ãšãªãããããã£ãšããŠäœ¿çšãã
ãããŸã§ã®ãšãããæ¬ã§ã¯ãã§ã«å±æ§ãšé¢ä¿ã«ã€ããŠäœåºŠãèšåããŠããŸãã ãšã³ãã£ãã£ãææã§ãã3çªç®ã®ããããã£ã¯ã¯ãšãªïŒãã§ããïŒã§ãã ããããã£ãšããŠã®ã¯ãšãªã¯ãä»ã®ãªããžã§ã¯ããåç §ã§ãããšããç¹ã§é¢ä¿ã«å¹æµããŸãã ãæ¥ç¶ãã¿ã€ãã®ãšã³ãã£ãã£ããããã£ãæéãªããžã§ã¯ããçŽæ¥åç §ããå Žåãããªã¯ãšã¹ããïŒãšã³ãã£ãã£ããããã£ãïŒã¯ãæå®ãããè¿°èªã«ãã£ãŠéžæããããªããžã§ã¯ããåç §ããŸãã ããããã£ãšããŠã®ãªã¯ãšã¹ãã¯ãiTunesã®äžçš®ã®ãã¹ããŒãããã¬ã€ãªã¹ãã§ããããŠãŒã¶ãŒã¯é³æ¥œã©ã€ãã©ãªãæå®ããç¹å®ã®åºæºã«åŸã£ãŠã³ã³ãã³ãããã£ã«ã¿ãªã³ã°ããŸãã ããããã£ãšããŠã®ã¯ãšãªã¯ãiTunesã®éžæãšåãããã«ã¯åäœããŸããããæåã®ãªã¯ãšã¹ãã§äžåºŠèšç®ãããŸããããã®éžæã®çµæã¯ã
refreshObject:mergeChanges:
ã¡ãœãããåŒã³åºããŠæŽæ°ããå¿ èŠããããšèªåèªèº«ãèšããŸã§ãã£ãã·ã¥ãããŸãã
ããšãã°ããªãŒã°ãããŒãžã£ãŒã¢ããªã±ãŒã·ã§ã³ã§ã¯ãååããWãã§å§ãŸãããŒã ã®ãã¹ãŠã®ãã¬ãŒã€ãŒãè¿ãã¯ãšãªããããã£ãäœæã§ããŸãã ããŒã ãšã³ãã£ãã£ãéžæãã[ååŸããããããã£]ã»ã¯ã·ã§ã³ã®[+]ãã¿ã³ãã¯ãªãã¯ããŠãæ°ãããªã¯ãšã¹ãã«wPlayersãšããååãä»ããŸãã Playerãšã³ãã£ãã£ãæçµãšã³ãã£ãã£ïŒã¯ãšãªããã³è¿ããããšã³ãã£ãã£ã®ã¿ã€ãïŒãšããŠéžæããŸãã
ãè¿°èªããã£ãŒã«ãã§ãæšæºã®NSPredicate圢åŒã䜿çšããŠãã£ã«ã¿ãŒã®åºæºãæå®ããŸãïŒåœ¢åŒãšNSPredicateã«ã€ããŠã¯ã第6ç« ã§è©³ãã説æããŸãïŒã ãã®äŸã§ã¯ãè¿°èªã¯
lastName BEGINSWITH "W"
ããã«ãªããŸãã
ãã®åŸãäœæããååã¯ãšãªã¯ãååå±æ§ãšåãPlayerãªããžã§ã¯ãã®å±æ§ã«ãªããŸãã ä»ã®å±æ§ãšåãæ¹æ³ã§äœ¿çšã§ããŸãã League Manager
application:didFinishLaunchingWithOptions:
å§ä»»ã¡ãœããã«ã³ãŒããè¿œå ããããšã«ãããè¿œå ããããªã¯ãšã¹ãã®æ£ããåäœã確èªã§ã
application:didFinishLaunchingWithOptions:
ã¯ã wPlayerå±æ§ã䜿çšããŸãã 以äžã«ç€ºãã³ãŒãã¯ããã¹ãŠã®ããŒã ãèŠæ±ããæåã®ããŒã ïŒååšããå ŽåïŒãååŸããwPlayerå±æ§ã§æå®ãããè¿°èªã«åŸã£ãŠãã¹ãŠã®ãã¬ãŒã€ãŒãéžæããŸãã ãã®åŸãæ¡ä»¶ãæºãããã¹ãŠã®ãã¬ã€ã€ãŒãã³ã³ãœãŒã«ã«è¡šç€ºãããŸãïŒååãšå§ïŒã
NSFetchedRequest *fetchRequest = [[NSFetchedRequest alloc] init]; [fetchRequest setEntity:[NSEntityDescription entityForName:@"Team" inManagedObjectContext:self.managedObjectContext]]; NSArray *teams = [self.managedObjectContext executeFetchRequest:fetchRequest error:nil]; if([teams count] > 0){ NSManagedObject *team = [teams objectAtIndex:0]; NSSet *wPlayers = [team valueForKey:@"wPlayers"]; for(NSManagedObject *wPlayer in wPlayers) { NSLog(@"%@ %@", [wPlayer valueForKey:@"firstName"], [wPlayer valueForKey:@"lastName"]); } }
ãã®ã³ãŒããå®è¡ã®ããã«å®è¡ãããšãã¢ããªã±ãŒã·ã§ã³ã«ãã§ã«ããããŒã¿ã«å¿ããŠãããã次ã®åºåã衚瀺ãããŸãã
2011-07-31 19:08:23.005 League Manager[8039:f203] Dwyane Wade 2011-07-31 19:08:23.006 League Manager[8039:f203] Tyson Warner
èæ ®ãã¹ãæåŸã®éèŠãªç¹ã¯ãã¯ãšãªãXcodeã®ããããã£ãšããŠäœæããããšã§ãã ã¢ããªã±ãŒã·ã§ã³ã§NSFeââtchRequestsã䜿çšããã®ãšåãæ¹æ³ã§ãã¯ãšãªãããããã£ãšããŠäœ¿çšã§ããŸãããããããã£ãšããŠã®ã¯ãšãªã¯ã¢ãã«ãšãã£ã¿ã§äºåã«å®çŸ©ãããŠããç¹ãç°ãªããŸãã ç·è²ã®ãã©ãŒã ã«ã©ãŒãæã€ãã¹ãŠã®ããŒã ãéžæããããããã£ãšããŠæ°ããã¯ãšãªãäœæããã«ã¯ãããšãã°ã[ãšã³ãã£ãã£]ã»ã¯ã·ã§ã³ã§ããŒã ãšã³ãã£ãã£ãéžæããããããããŠã³ãªã¹ãã衚瀺ããããŸã§[ãšã³ãã£ãã£ãè¿œå ]ãã¿ã³ãæŒãããã®ãªã¹ããããªãã·ã§ã³ãéžæããŸãããã§ãããªã¯ãšã¹ãã®è¿œå ãã ãã®ã¯ãšãªããGreenTeamsããšåŒã³ãŸãã Xcodeã®äžå€®ã®åã«ã¯ãæ°ãããã£ã«ã¿ãŒæ¡ä»¶ãè¿œå ããããã®ã+ããã¿ã³ã衚瀺ãããŸãã [+]ãã¿ã³ãã¯ãªãã¯ããŠãããã¹ãããã¯ã¹ã«uniformColor == "Green"ãšå ¥åããŸãã ãã¹ãŠã次ã®ããã«ãªããŸãã
ãã®æ¹æ³ã§äœæãããããããã£ãšããŠã®ãªã¯ãšã¹ãã¯ããŒã¿ã¢ãã«ã«ä¿åããã
fetchRequestTemplateForName:
NSManagedObjectModelã¯ã©ã¹ã¡ãœããã䜿çšããŠååŸã§ããŸãã
application:didFinishLaunchingWithOptions:
ã³ãŒããè¿œå ã
application:didFinishLaunchingWithOptions:
ããªã²ãŒãã¡ãœããã䜿çšããŠãæ°ããäœæããããªã¯ãšã¹ãã®ç¶æ ã確èªããŸãã
NSFetchRequest *fetchRequest = [self.managedObjectModel fetchRequestForTemplateName:@"GreenTeams"]; NSArray *teams = [self.managedObjectContext executeFetchRequest:fetchRequest error:nil]; for(NSManagedObject *team in teams){ NSLog(@"%@", [team valueForKey:@"name"]); }
ã¢ããªã±ãŒã·ã§ã³ã«ããããŒã¿ã«å¿ããŠããããã次ã®åºåã衚瀺ãããŸãã
2011-07-31 19:17:25.598 League Manager[8184:f203] Boston Celtics
ãšã³ãã£ãã£äœæ
ãããŸã§ã®ãšããããšã³ãã£ãã£ã®è°è«ã«éåžžã«ç©æ¥µçã«åãçµãã§ããŸããã ãšã³ãã£ãã£ã¯ã管ç察象ãªããžã§ã¯ããæã€å±æ§ãšé¢ä¿ãèšè¿°ããŸãã æ°ãããšã³ãã£ãã£ãè¿œå ããã«ã¯ãããšã³ãã£ãã£ãè¿œå ããšããç¢æãä»ããã+ããã¿ã³ãã¯ãªãã¯ããååãæå®ããå¿ èŠããããŸãã
ããã©ã«ãã§ã¯ããšã³ãã£ãã£ãªããžã§ã¯ãã®ã€ã³ã¹ã¿ã³ã¹ã¯NSManagedObjectåã§è¡šãããŸããããããžã§ã¯ãã®ãµã€ãºãšè€éããå¢ãã«ã€ããŠã管ç察象ãªããžã§ã¯ããè¡šãç¬èªã®ã¯ã©ã¹ãäœæããå¿ èŠãçããå ŽåããããŸãã äœæãã管ç察象ãªããžã§ã¯ãã¯NSManagedObjectã¯ã©ã¹ããç¶æ¿ããå¿ èŠããããŸããäœæããã¯ã©ã¹ã®ååã¯ããšã³ãã£ãã£ãç·šéãããšãã«[ã¯ã©ã¹]ãã£ãŒã«ãã§æå®ããå¿ èŠããããŸãã
ãã®æ®µéã§ã¯ããŸã ãšã³ãã£ãã£ã®ç¶æ¿ãšãããããã¯ã«è§ŠããŠããŸããã ãšã³ãã£ãã£ã®ç¶æ¿ã¡ã«ããºã ã¯ãäœæãããå±æ§/ã¡ãœãããç¶æ¿ãããå Žåã®ã¯ã©ã¹ç¶æ¿ã¡ã«ããºã ã«äŒŒãŠããŸãã ããšãã°ãPersonãšã³ãã£ãã£ãäœæããPersonããPlayerãšã³ãã£ãã£ãç¶æ¿ã§ããŸãã ã¢ããªã±ãŒã·ã§ã³ã«ä»ã®äººã®è¡šçŸïŒãã¬ãŒããŒãªã©ïŒãããå ŽåãCoachã®æ¬è³ªãPersonããç¶æ¿ã§ããŸãã ããã°ã©ããŒãPersonãšã³ãã£ãã£ãŒã®ã€ã³ã¹ã¿ã³ã¹ãçŽæ¥äœæããªãããã«ãããå Žåã¯ããã®ãšã³ãã£ãã£ãŒãæœè±¡ã§ããããšã瀺ãå¿ èŠããããŸãã ããšãã°ãdateOfBirthãã£ãŒã«ããæã€Personãšã³ãã£ãã£ãäœæããæœè±¡ãšã³ãã£ãã£ãšããŠããŒã¯ããŸãã
次ã®æé ã§ã¯ãPlayerãšã³ãã£ãã£ãå€æŽããŸãã芪ïŒç¶æ¿ïŒPersonãšã³ãã£ãã£ãèšå®ããŸãã Playerãšã³ãã£ãã£ãéžæãããParent EntityããšããããããããŠã³ãªã¹ãã§ãPersonããéžæããŸãã
ããã§ãPlayerOfferå±æ§ã®dateOfBirthã䜿çšå¯èœã«ãªããŸãã
å±æ§ãäœæãã
å±æ§ã¯ãšã³ãã£ãã£ãèšè¿°ããŸãã ãšã³ãã£ãã£å±æ§ã¯ããšã³ãã£ãã£ã®çŸåšã®ç¶æ ãèšè¿°ããããŸããŸãªã¿ã€ãã®ããŒã¿ã§è¡šãããšãã§ããŸãã ãšã³ãã£ãã£ãéžæãã[å±æ§]ã»ã¯ã·ã§ã³ã§[+]ãã¯ãªãã¯ããŸãïŒæ°ããå±æ§ãè¿œå ããŸããååãæå®ããããšãå¿ããªãã§ãã ããïŒã 以äžã®å³ã¯ãå¯èœãªå±æ§èšå®ã瀺ããŠããŸãã
ãã®ç« ã®ååã§ãããŸããŸãªå±æ§ããããã£ã«ã€ããŠèª¬æããŸããã ééããªãæãéèŠãªå±æ§ããããã£ã¯ãã®ã¿ã€ãã§ãã ããã©ã«ãã§ã¯ãCore Dataã«ã¯ããã€ãã®ã¿ã€ãããããŸãïŒ
äžèšã®ã»ãšãã©ã®åã¯ãObjective-Cã®ããŒã¿åã«çŽæ¥é¢é£ããŠããŸãã å³ããå€ããŠããå¯äžã®ã¿ã€ãã¯ãã«ã¹ã¿ã ïŒããã°ã©ããŒã«ãã£ãŠäœæãããïŒã¿ã€ãçšã«èšèšãããTransformableã¿ã€ãã§ãã æ¢åã®ã¿ã€ãã«å¿ èŠãªããŒã¿ãå«ããããšãã§ããªãå Žåã¯ãTransformableã¿ã€ãã䜿çšããããšããå§ãããŸãã äŸãšããŠãåã³ãªãŒã°ãããŒãžã£ãŒã¢ããªã±ãŒã·ã§ã³ã䜿çšã§ããŸãããã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãCGColorRefåã§è¡šçŸã§ããè²ãä¿åããå¿ èŠããããŸãã ãã®å Žåãå±æ§ã¯Transientããã³Transformableã§ããå¿ èŠããããåæã«ãå±æ§ãæ¢åã®åã«å€æããCore Dataã¡ã«ããºã ãå°å ¥ããå¿ èŠããããŸãã NSManagedObjectãç¶æ¿ããç¬èªã®ã¯ã©ã¹ãäœæããå Žåã¯ãã«ã¹ã¿ã ïŒã«ã¹ã¿ã ïŒå±æ§ã䜿çšããŸãã
ãªã³ã¯ãäœæãã
æ£èŠåããã»ã¹ã§ã¯ãããŒã¿ã¢ãã«ã®è€éãã«å¿ããŠãå€ãã®å Žåãè€æ°ã®ãšã³ãã£ãã£ãäœæããŸãã é¢ä¿ã«ããããªãŒã°ãããŒãžã£ãŒã¢ããªã±ãŒã·ã§ã³ã§è¡ãããŠããããã«ããã¬ãŒã€ãŒãšã³ãã£ãã£ãšããŒã ãšã³ãã£ãã£ã䜿çšããŠããšã³ãã£ãã£ãçžäºã«é¢é£ä»ããããšãã§ããŸãã ã³ã¢ããŒã¿ã䜿çšãããšãæ¥ç¶ã調æŽïŒæãæ¹ãããã®èšèã奜ãã§ãïŒããŠãã¢ãã«åãããããŒã¿éã®é¢ä¿ãæãæ£ç¢ºã«åæ ã§ããããã«ãªããŸãã
Xcodeã§ã¯ãæ¥ç¶ãäœæãããšãããŸãã¯æ¥ç¶ãéžæãããšãã«ãæ¥ç¶ã®æ§è³ªãå€æŽã§ããäžé£ã®èšå®ã衚瀺ãããŸãã ããšãã°ãPlayerãšã³ãã£ãã£ã§ããŒã é¢ä¿ãéžæãããšããããã次ã®å³ã衚瀺ãããŸãã
ãã£ãŒã«ãã®ãªã¹ãïŒ
- å
- 究極ã®å®äœ
- ãã£ãŒãããã¯
- äžæç
- ãªãã·ã§ãã«
- 察å€ã®é¢ä¿
- æ°éïŒæå°ããã³æ倧ïŒ
- é€å»ã«ãŒã«
次ã®ã»ã¯ã·ã§ã³ã§ã¯ããããã®ãã£ãŒã«ãããã詳现ã«èª¿ã¹ããããããšã³ãã£ãã£ã®ããããã£ã«ã©ã®ããã«åœ±é¿ããããããã³ãããã®æå³ã説æããŸãã
éä¿¡ã®ååïŒååïŒ
æåã®ãã£ãŒã«ãNameã¯ãæ¥ç¶ã«é¢é£ãããªããžã§ã¯ãã®å±æ§NSManagedObjectã®ååã«ãªããŸãã åãå ¥ããããå¥çŽã«ãããšãååã¯å°æåïŒå°æåïŒã§ãªããã°ãªããŸããã æ¥ç¶ããå€ãã®å Žåãååã¯è€æ°åœ¢ã«ããå¿ èŠããããŸãã æ°ã ãããã¯ãã¹ãŠåãªãåæã§ãããã¢ãã«ãããç解ãããããèªã¿ããããä¿å®ãããããã®ã«ããããšãç解ããããšã¯äŸ¡å€ããããŸãã ãªãŒã°ãããŒãžã£ãŒã¢ããªã±ãŒã·ã§ã³ã§ã¯å¥çŽã«æºæ ããŠããããããã¬ãŒã€ãŒãšã³ãã£ãã£ã®æ¥ç¶ã¯ããŒã ãšåŒã°ããŸãã æ¬è³ªçã«ããã¬ãŒã€ãŒãšã®ããŒã ã³ãã¥ãã±ãŒã·ã§ã³ã¯ããã¬ãŒã€ãŒããšåŒã°ããŸãã
å®å ãšé
次ã®ãã£ãŒã«ãDestinationã¯ãæ¥ç¶ã®ããäžæ¹ã®ç«¯ããã®ãšã³ãã£ãã£ãå®çŸ©ããŸãã éãã£ãŒã«ãã§ã¯ãåãé¢ä¿ãéžæã§ããŸãããæçµãšã³ãã£ãã£ã®åŽé¢ããã®ã¿éžæã§ããŸãã
Inverseãã£ãŒã«ããNo Inverse Relationshipã«èšå®ãããŸãŸã«ããŠãããšãäžè²«æ§ãšã©ãŒãšèª€ã£ãŠèšå®ãããå±æ§ãšãã2ã€ã®èŠåãä¿èšŒãããŸãã
ç¡èŠã§ããŸããçµå±ããããã¯åãªããšã©ãŒã§ã¯ãªããã³ã³ãã€ã©ã®èŠåã§ãããäºæããªãçµæã«ãªãå¯èœæ§ããããŸãã Core Dataã¯ãåæ¹åéä¿¡æ å ±ã䜿çšããŠãªããžã§ã¯ãã°ã©ãã®äžè²«æ§ãç¶æããããçŽã/å ã«æ»ãæäœãåŠçããŸãã Inverseãšã³ãã£ãã£ãæå®ããã«æ¥ç¶ãé¢ãããšãUndo / Redoæäœãå®è¡ããããã«ãªããžã§ã¯ãã°ã©ãã®äžè²«æ§ãç¶æãã責任ããããŸãã Appleã®ããã¥ã¡ã³ãã¯ãç¹ã«å€å¯Ÿå€ã®é¢ä¿ã䜿çšããå Žåã«ã¯ãããã«å¯ŸããŠåŒ·ãå©èšããŸãã éæ¥ç¶ãæå®ããªãå Žåãæ¥ç¶ã®ãã¡ãåŽã®ç®¡ç察象ãªããžã§ã¯ããå€æŽãããå Žåãæ¥ç¶ã®å察åŽã®ç®¡ç察象ãªããžã§ã¯ãã¯å€æŽæžã¿ãªããžã§ã¯ããšããŠããŒã¯ãããŸããã
äžæç
ãªã³ã¯ããäžæçããšããŠããŒã¯ããããšã«ãããã³ã¢ããŒã¿ã«ããã®ãªã³ã¯ãã¹ãã¬ãŒãžã«ä¿åããå¿ èŠããªãããšãäŒããŸãã ã¯ãã¹ãªã³ã¯ã¯åŒãç¶ãRedo / UndoæäœããµããŒãããŸãããã¢ããªã±ãŒã·ã§ã³ãéãããšæ¶ããŸãã æ¶æ©ã®ããã€ãã®å¯èœãªçšéã次ã«ç€ºããŸãã
- äžæçã§ãããçŸåšã®ã¢ããªã±ãŒã·ã§ã³èµ·åã»ãã·ã§ã³ããé·ãååšããŠã¯ãªããªããšã³ãã£ãã£éã®é¢ä¿
- ããã€ãã®å€éšããŒã¿ãœãŒã¹ããååŸã§ããéä¿¡æ å ±ïŒå¥ã®ã³ã¢ããŒã¿ã¹ãã¢ãŸãã¯ãã®ä»ã®æ å ±ãœãŒã¹ïŒ
ã»ãšãã©ã®å Žåãæ¥ç¶ãæ°žç¶çã«ç¶æããå¿ èŠããããŸãã
ãªãã·ã§ãã«
次ã®ãã£ãŒã«ãïŒãªãã·ã§ã³ïŒã¯ããªã³ã¯ãnilã«ã§ãããã©ããã決å®ãããã§ãã¯ããã¯ã¹ã§ãã ããŒã¿ããŒã¹ãã£ãŒã«ãã®NULLå€ãŸãã¯éNULLå€ã®ãããªãã®ãšèããŠãã ããã ãã§ãã¯ããã¯ã¹ãèšå®ãããŠããå Žåããªã³ã¯ãæå®ããã«ãšã³ãã£ãã£ãä¿åã§ããŸãã ãã§ãã¯ããã¯ã¹ããªã»ããããŠãšã³ãã£ãã£ãä¿åããããšãããšãä¿åã¯å€±æããŸãã ãªãŒã°ãããŒãžã£ãŒã¢ããªã±ãŒã·ã§ã³ã®ãã¬ãŒã€ãŒãšã³ãã£ãã£ã§ããªã»ãããã§ãã¯ããã¯ã¹ã䜿çšããŠããŒã æ¥ç¶ãçµäºããå Žåãåãã¬ãŒã€ãŒã¯ç¹å®ã®ããŒã ã«å±ããŠããå¿ èŠããããŸãã ããŒã æ¥ç¶ãnilã§ç¢ºç«ããããã«ä¿åïŒsaveïŒãåŒã³åºãïŒã¡ãœããã䜿çšãããšããteam is required valueããšããããã¹ããå«ããšã©ãŒãçºçããŸãã
察å€ã®é¢ä¿
ãã®ãªãã·ã§ã³ã¯ãã§ãã¯ããã¯ã¹ã§ããããŸãã ãã§ãã¯ããã¯ã¹ãèšå®ãããŠããå ŽåãçŸåšã®æ¥ç¶ã¯ãã®ç«¯ã«å€ãã®ãªããžã§ã¯ãã瀺ãããšãã§ããŸããããã§ãªãå Žåã¯ãã1察1ãæ¥ç¶ãååŸããŸãã
æ°éïŒæå°ããã³æ倧ïŒ
çŸåšã®ãªããžã§ã¯ããæã€ããšãã§ããéä¿¡åŽã®ãªããžã§ã¯ãã®æ°ãå®çŸ©ããŸãã ãã®ãªãã·ã§ã³ã¯ããå€å¯Ÿå€ãã®é¢ä¿ãéžæãããŠããå Žåã«ã®ã¿æå¹ã§ãã
ä¿åäžã«å¶éãè¶ ãããšããé ç®ãå€ãããŸãããšãããšã©ãŒãšãäžååãªæ°ã§ãããé ç®ãå°ãªãããŸãããçæãããŸãã
ã¡ãªã¿ã«ãæå°å€ã¯æ倧å€ããã倧ããå ŽåããããŸãããæ€èšŒã¯å®è¡ãããªããããäžè¬ã«ã³ã¢ããŒã¿ãæºãããŸãã ãããã£ãŠãæå°å€ãæ倧å€ããã倧ããå Žåããªããžã§ã¯ãã°ã©ããä¿åããããšããŠã倱æããŸãã
ã«ãŒã«ãåé€
åé€ã«ãŒã«ã¯ããªã³ã¯ãæã€ãªããžã§ã¯ããåé€ãããšãã«Core Dataãå®è¡ããå¿ èŠãããã¢ã¯ã·ã§ã³ã決å®ããŸãã
åé€ã«ã¯4ã€ã®ã¿ã€ãããããŸãã
1.ã«ã¹ã±ãŒã-ãœãŒã¹ãªããžã§ã¯ããåé€ãããé¢é£ããïŒæçµïŒãªããžã§ã¯ãããã¹ãŠåé€ãããŸã
2.æåŠ-ãœãŒã¹ãªããžã§ã¯ããããã€ãã®ãªããžã§ã¯ãã«é¢é£ä»ããããŠããå Žåãåé€ã¯è¡ãããŸãã
3. Nullify-å ã®ãªããžã§ã¯ãã¯åé€ãããé¢é£ãããã¹ãŠã®ãªããžã§ã¯ãã®ãã£ãŒãããã¯ã¯nilã«èšå®ãããŸãã
4.ã¢ã¯ã·ã§ã³ãªã-å ã®ãªããžã§ã¯ãã¯åé€ãããŸãããé¢é£ãããªããžã§ã¯ãã¯å€æŽãããŸãã
ãªãŒã°ãããŒãžã£ãŒã¢ããªã±ãŒã·ã§ã³ã§ã¯ããã¬ã€ã€ãŒã³ãã¥ãã±ãŒã·ã§ã³ã®åé€ã«ãŒã«ã¯ã«ã¹ã±ãŒãã§ããã€ãŸããããŒã ãåé€ããããšããã®ãã¬ã€ã€ãŒããã¹ãŠåé€ãããŸãã åé€ã«ãŒã«ãæåŠã«å€æŽããå ŽåãããŒã ã«å°ãªããšã1人ã®ãã¬ãŒã€ãŒãããå Žåãåé€ã¯è¡ãããŸããã§ããã Nullifyã§åé€ã«ãŒã«ãèšå®ãããšããã¹ãŠã®ãã¬ãŒã€ãŒããªããžããªã«æ®ããŸãããããŒã ãžã®åç §ã¯nullã«ãªããŸãããããŒã èªäœã¯åé€ãããŸãã