ããã¯
ã³ã¢ããŒã¿ã®èšäºã®æåŸã®ããŒãã§ãã以åã®ããŒãã¯ã
ããŒã1ãš
ããŒã2ããå
¥æã§ããŸãã
ãã®èšäºã§ã¯ããŠãŒã¶ãŒãšåãåããã€ã³ã¿ãŒãã§ãŒã¹éšåã§äœæ¥ããŸã
ãNSFetchRequestãš
NSFetchedResultsControllerãããã«åœ¹ç«ã¡ãŸãã ãã®éšåã¯ããªã倧ããããšã倿ããŸããããããã€ãã®åºçç©ã«åå²ããçç±ã¯ãããŸããã ããæ£ç¢ºã«ã¯ãã«ããã®äžã«å€ãã®ã³ãŒããšåçããããŸãã
ã€ã³ã¿ãŒãã§ãŒã¹ã¯ææ§ãªãã®ã§ããã補åã®èŠä»¶ã«å¿ããŠã倧å¹
ã«å€æŽãããå¯èœæ§ããããŸãã ãã®èšäºã§ã¯ã圌ã«ããŸãæéãå²ãããšã¯ãããããæ£ç¢ºã«ã¯ãã»ãšãã©è²»ããããšã¯ããŸããïŒ
ã¬ã€ãã©ã€ã³ãªã©ã«åŸãããšãæå³ããŸãïŒã ãã®èšäºã®ãã®éšåã§ã®ç§ã®ã¿ã¹ã¯ã¯ã
Core Data
ãiOSã³ã³ãããŒã«ã«éåžžã«ã·ãŒã ã¬ã¹ã«é©åããæ¹æ³ã瀺ãããšã§ãã ãããã£ãŠãã³ã³ãããŒã«ãš
Core Data
çžäºäœçšãããã·ã³ãã«ã§èŠèŠçã«èŠããå Žåããããã®ç®çã§ãã®ãããªã€ã³ã¿ãŒãã§ã€ã¹ã䜿çšããŸãã æããã«ãå®éã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãã€ã³ã¿ãŒãã§ãŒã¹éšåã¯ããå€ãã®æéãè²»ããå¿
èŠããããŸãã
ãã£ã¬ã¯ããª
å§ããåã«ãèšäºã®æåŸã®éšåã§å®éšããã¢ããªã±ãŒã·ã§ã³ããªã²ãŒãã¢ãžã¥ãŒã«ïŒ
AppDelegate.swift
ïŒã«å
ã®å€èгãäžããŸãããã
ã¹ããŒãªãŒããŒãããå§ããŸãããïŒ
- ãã¥ãŒã«ããã€ãã®ãã¿ã³ã远å ããŸãã2ã€ã®ãã£ã¬ã¯ããªïŒã顧客ããšããµãŒãã¹ãïŒã1ã€ã®ããã¥ã¡ã³ãïŒã泚æãïŒã1ã€ã®ããã¥ã¡ã³ãã«é¢ããã¬ããŒãããããŸãã
- Navigation Controllerã®è¿œå ïŒã¡ãã¥ãŒ
Editor\Embed In\Navigation Controller
ïŒ - ã¿ã€ãã«ïŒã¿ã€ãã«ïŒãæã€æ°ããTable View Controllerã远å ããŸã
- 远å ãããTable View Controllerãã¡ã€ã³ã¡ãã¥ãŒã®å¯Ÿå¿ãããã¿ã³ã«æ¥ç¶ããŸãïŒ
Action Segue\Show
ïŒ

次ã«ã
Table View Controllerã®ã¯ã©ã¹ã远å ããå¿
èŠããã
ãŸã ã
- ã¡ãã¥ãŒãã¡ã€ã«\æ°èŠ\ãã¡ã€ã«...
- ãã³ãã¬ãŒããšããŠCocoaã¯ã©ã¹ãéžæããŸã

UITableViewController
ã芪ã¯ã©ã¹ãšããŠéžæããã¯ã©ã¹ã®ååãæå®ããŸãUITableViewController

- ãã¡ã€ã«ãä¿åããå Žæãéžæãã[ äœæ ]ãã¯ãªãã¯ããŸã
Table View Controller ïŒ
Identity Inspector\Custom Class\Class
ïŒã«äœæãããã®ã¯ã©ã¹ãæå®ããããšã¯å¿ããããŸããã
ããã§ã¯
ãããã¿ã€ãã»ã«ã䜿çšãããããŒãã«ã»ã«ã®ãã«ã¹ã¿ã ãã¯ã©ã¹ãäœæããŸãïŒä»ã®ããšã«éäžããããïŒããã®ãããªã»ã«ã®æ°ããŒãã«èšå®ããŸãããïŒ
Attributes Inspector\Table View\Prototype Cells
ïŒã

次ã«ã
ããŒãã«ãã¥ãŒããŒã¿ãœãŒã¹ãããã³ã«ãå®è£
ããããã«ãããŒã¿ãœãŒã¹ãå®çŸ©ããå¿
èŠããããŸãã æåŸã®éšåã§ã¯ã
NSFetchRequestã«äŒã
ãŸããã ãäžèŠãããšãã®ç®çã«é©ããŠããããã§ãã ããã䜿çšãããšãé
åã®åœ¢åŒã§ãã¹ãŠã®ãªããžã§ã¯ãã®ãªã¹ããååŸã§ããŸããããã¯å®éãå¿
èŠãªãã®ã§ãã ãããã顧客ã®ãªã¹ããèŠãã ãã§ãªãããããã远å ãåé€ãç·šéãããã®ã§ãã ãã®å Žåãããããã¹ãŠã®å€æŽãæåã§è¿œè·¡ããæ¯åæåã§ãªã¹ããæŽæ°ããå¿
èŠããããŸãã ããã¯ããŸãè¯ããªãã§ããã ããããå¥ã®ãªãã·ã§ã³
-NSFetchedResultsControllerããããŸããããã¯
NSFetchRequestã«éåžžã«äŒŒãŠããŸããããªã¯ãšã¹ãæã«å¿
èŠãªãªããžã§ã¯ãã®é
åãè¿ãã ãã§ãªãããã¹ãŠã®ã¬ã³ãŒããç£èŠãç¶ããŸããã¬ã³ãŒãã倿Žãããå Žåãã¬ã³ãŒãã¯å¥ã®ç®¡çãããã³ã³ããã¹ããä»ããŠããã¯ã°ã©ãŠã³ãã§ããŒããããŸã-圌ã¯ããã«ã€ããŠãæããŠãããŸãã ãã®ã€ãã³ããåŠçããã ãã§æžã¿ãŸãã
ã¢ãžã¥ãŒã«ã«
NSFetchedResultsControllerãå®è£
ããŸãããã æåã«ãã¹ãŠã®ã³ãŒããæäŸããæ¬¡ã«ã³ã¡ã³ãããŸãã
倿°å®çŸ©ã»ã¯ã·ã§ã³ã§ãã¿ã€ã
NSFetchedResultsController
fetchedResultsControllerãªããžã§ã¯ããäœæããŸãã ã芧ã®ãšããã
NSFetchRequest
åºã¥ããŠäœæãããŠããŸãïŒãCustomerããšã³ãã£ãã£ã«åºã¥ããŠNSFetchRequestãäœæãã顧客ã®ååã§ãœãŒããèšå®ããŸãïŒã 次ã«ã
NSFetchedResultsController
èªäœãäœæããã³ã³ã¹ãã©ã¯ã¿ãŒã«å¿
èŠãª
NSFetchRequest
ãšãããŒãžã³ã³ããã¹ããæž¡ããŸããããã§ã¯ã远å ã®ã³ã³ã¹ãã©ã¯ã¿ãŒãã©ã¡ãŒã¿ãŒïŒsectionNameKeyPathãcacheNameïŒã䜿çšããŸããã
次ã«ã
View Controller ïŒ
func viewDidLoad()
ïŒãããŒããããšãã«ã
fetchedResultsControllerãå®è¡ããŠå®è¡ããŸãã
try fetchedResultsController.performFetch()
ãŸãã
Table View Data Sourceãå®è£
ããã«ã¯ã2ã€ã®é¢æ°ãåå®çŸ©ããå¿
èŠããã
ãŸã ã
- æåã®é¢æ°ã§ã¯ãçŸåšã®ã»ã¯ã·ã§ã³å
ã®ãªããžã§ã¯ãã®æ°ãè¿ããŸãïŒå®éãããã§ã¯ã»ã¯ã·ã§ã³ã䜿çšããªãããããã¹ãŠã®ãªããžã§ã¯ãã1ã€ã®ã»ã¯ã·ã§ã³ã«å«ãŸããŸãïŒ
- 2çªç®ã®æ¹æ³ã§ã¯ãããã°ã©ã ã§åãªããžã§ã¯ãã®ã»ã«ãäœæãããããè¿ããŸãã
ããããã§ãã¯ããŠã¿ãŸãããïŒ ããã§ã¢ããªã±ãŒã·ã§ã³ãèµ·åãã[
«Customers»
]ã¡ãã¥ãŒã«ç§»åãããšãèšäºã®æåŸã®éšåã§è¿œå ããããã¹ãŠã®é¡§å®¢ã衚瀺ãããŸãã ããã»ã©è€éã§ã¯ãªãã£ãã§ãããïŒ


ç¶è¡ããåã«ãå°ãæé©åããŸããã
ãNSFetchedResultsControllerãªããžã§ã¯ãã®äœæã¯ç°¡æœã§
ã¯ãããŸãããä»ã®ãšã³ãã£ãã£ã«å¯ŸããŠãäœæããå¿
èŠããããŸãã ãã®å Žåãæ¬è³ªçã«ã¯ããšã³ãã£ãã£ã®ååãšãå Žåã«ãã£ãŠã¯äžŠã¹æ¿ããã£ãŒã«ãã®ååã®ã¿ã倿ŽãããŸãã ãã³ããŒïŒããŒã¹ãããè¡ããªãããã«ããã®ãªããžã§ã¯ãã®äœæã
CoreDataManagerã«ç§»åããŸãããã
import CoreData import Foundation class CoreDataManager {
ããã念é ã«çœ®ããŠãfetchedResultsControllerã®å®çŸ©ã¯æ¬¡ã®ããã«å€æŽãããŸãã
var fetchedResultsController = CoreDataManager.instance.fetchedResultsController("Customer", keyForSort: "name")
ããã§ã顧客ãéžæãããšãã«ãå¿
èŠã«å¿ããŠç·šéã§ãããã¹ãŠã®ããŒã¿ãå«ããã«ãŒãããéãããšã確èªããå¿
èŠããããŸãã ãããè¡ãã«ã¯ãå¥ã®
View Controllerã远å ãïŒ
«Customer»
ããããŒãšããŸãïŒã
Table View Controllerã«æ¥ç¶ã
ãŸã ã

ã³ã³ãããŒã©ãŒéã®é·ç§»ã®ã¿ã€ãã«ã€ããŠã¯ãã
Present Modally
ããéžæããŸãã

ãŸãããã®
Segueãååã§åç
§ããå¿
èŠããã
customersToCustomer
ãåå
-customersToCustomerãæå®ããŸãããã

ãã®
View Controllerã«ã¯ç¬èªã®ã¯ã©ã¹ãå¿
èŠã§ãããã¹ãŠã
Table View Controllerã§è¡ã£ããã®ã«äŒŒãŠã
ãŸãã ãéžæãã芪ã¯ã©ã¹ã§ãã
UIViewController
ãšããŠã®ã¿ãã¯ã©ã¹åã¯
CustomerViewController
ã§ãã

ãããŠãæ°ãã
View Controllerã«ãã®ã¯ã©ã¹ã瀺ã
ãŸã ã

次ã«ã2ã€ã®ãã¿ã³ã§
ããã²ãŒã·ã§ã³ããŒã远å ããŸãïŒ
ä¿å -倿Žãä¿åãããããš
ãã£ã³ã»ã« -
ãã£ã³ã»ã«ããããïŒã ãŸããæ
å ±ïŒ
nameãš
info ïŒã衚瀺ããã³ç·šéããããã«2ã€ã®ããã¹ããã£ãŒã«ããå¿
èŠã§ãã 2ã€ã®
ã¢ã¯ã·ã§ã³ ïŒä¿åãšãã£ã³ã»ã«çšïŒãš2ã€ã®
ã¢ãŠãã¬ãã ïŒååãšæ
å ±çšïŒãäœæããŸãããã

ã客æ§ã®ãã«ãŒããã®ã€ã³ã¿ãŒãã§ãŒã¹ã®æºåãã§ããŸãããä»ãã³ãŒããæžãå¿
èŠããããŸãã ããžãã¯ã¯æ¬¡ã®ããã«ãªããŸãã顧客ã®ãªã¹ããã顧客ã®ãã«ãŒããã«ç§»åãããšããéžæããããªã¹ãè¡ã«åºã¥ããŠ
顧客ãªããžã§ã¯ãã転éã
ãŸã ã ãã«ãŒãããéããããšããã®ãªããžã§ã¯ãããã®ããŒã¿ãã€ã³ã¿ãŒãã§ãŒã¹èŠçŽ ïŒ
name
ã
info ïŒã«ããŒãããããªããžã§ã¯ããä¿åããããšãå察ã«ãã€ã³ã¿ãŒãã§ãŒã¹èŠçŽ ã®å
容ãä¿åããããªããžã§ã¯ãã®ãã£ãŒã«ãã«è»¢éãããŸãã
ãŸããå¿
é ã®ãã£ãŒã«ã
åããããšããäºå®ãèæ
®ããå¿
èŠããããŸãã ãŠãŒã¶ãŒã空ã®ååã§é¡§å®¢ãä¿åããããšãããšãé倧ãªãšã©ãŒãåãåããŸãã ãããé²ãããã«ãä¿åãããããŒã¿ã®æ£ç¢ºæ§ã®ãã§ãã¯ã远å ããŸããããããŒã¿ãæ£ãããªãå Žåã察å¿ããèŠåã衚瀺ãããã®ãããªãªããžã§ã¯ãã®èšé²ããããã¯ããŸãã ãŠãŒã¶ãŒã¯æ£ããããŒã¿ãå
¥åãããããã®ãããªãªããžã§ã¯ãã®èšé²ãæåŠããå¿
èŠããããŸãã
ããã§æåŸã«èæ
®ããå¿
èŠãããã®ã¯ã確ãã«ãæ¢åã®é¡§å®¢ãç·šéããã ãã§ãªããæ°ãã顧客ã远å ããããšã§ãã ãããæ¬¡ã®ããã«è¡ããŸãã顧客ã®ãªã¹ãã«ãæ°ãã顧客ãäœæãããã¿ã³ã远å ããŸããããã«ããã
nilãæž¡ãããšã§ãã«ãŒãããéããŸãã ãããŠã顧客ã®ãã«ãŒããã®ããŒã¿ãä¿åãããšãã
顧客ãªããžã§ã¯ãããŸã äœæãããŠããªããã©ããã確èªã
ãŸã ïŒã€ãŸããããã¯æ°ãã顧客ã®å
¥åã§ãïŒããã®åŸãããã«äœæããŸãã
ãããã£ãŠã次ã®ã³ãŒããååŸããŸãã
ããã§ã¯ã
Table View Controllerã«æ»ã£ãŠãã¿ã³ã远å ããæ°ãã顧客ãäœæããŸãïŒé¡§å®¢ã®ã«ãŒãã«äŒŒã
Navigation Item + Bar Button Item
ïŒã ãããŠããã®ãã¿ã³ã®
AddCustomer
ãšãã
ã¢ã¯ã·ã§ã³ãäœæããŸãã

ãã®ã¢ã¯ã·ã§ã³ã¯ãã«ãŒãããéããŠæ°ãã顧客ãäœæãã
nilãæž¡ããŸãã
@IBAction func AddCustomer(sender: AnyObject) { performSegueWithIdentifier("customersToCustomer", sender: nil) }
æ¢åã®é¡§å®¢ãéžæãããšãã«ã圌ã®ãã«ãŒãããéãããšã確èªããããã«æ®ã£ãŠããŸãã ããã«ã¯ã2ã€ã®æé ãå¿
èŠã§ãã
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { let customer = fetchedResultsController.objectAtIndexPath(indexPath) as? Customer performSegueWithIdentifier("customersToCustomer", sender: customer) } override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if segue.identifier == "customersToCustomer" { let controller = segue.destinationViewController as! CustomerViewController controller.customer = sender as? Customer } }
æåã®æé ïŒãªã¹ãè¡ã匷調衚瀺ãããšãïŒã§ã¯ãçŸåšã®é¡§å®¢ããèªã¿åããã2çªç®ïŒãªã¹ããããã«ãŒããã«åãæ¿ãããšãïŒã§ã¯ãéžæãã顧客ãžã®ãªã³ã¯ããã«ãŒããã®é¡§å®¢å€æ°ã«å²ãåœãŠãŠãéãããšãã«ãã¹ãŠãèªã¿åããããã«ããŸããªããžã§ã¯ãããŒã¿ã
ã¢ããªã±ãŒã·ã§ã³ãå®è¡ããŠããã¹ãŠãæ£åžžã«æ©èœããããšã確èªããŸãããã

ã¢ããªã±ãŒã·ã§ã³ã¯æ©èœããŸããæ°ãã顧客ãå
¥åããæ¢åã®é¡§å®¢ãç·šéã§ããŸããããªã¹ãå
ã®æ
å ±ã¯èªåçã«æŽæ°ããããäžèŠãªïŒãŸãã¯èª€ã£ãŠå
¥åããïŒé¡§å®¢ãåé€ããã¡ã«ããºã ã¯ãããŸããã ãããä¿®æ£ããŸãããã
ããã§ã¯ãããããã¹ãŠã®å€æŽããèªèãããŠãã
NSFetchedResultsControllerã䜿çšããŠãããããåã«ããªãã¹ã³ãããå¿
èŠããããŸãã ãããè¡ãã«ã¯ã
NSFetchedResultsControllerDelegateããªã²ãŒã
ãããã³ã«ãå®è£
ããå¿
èŠããã
ãŸã ã ãã®ãããã³ã«ãå®è£
ããããšã宣èšããŸãã
class CustomersTableViewController: UITableViewController, NSFetchedResultsControllerDelegate {
NSFetchedResultsControllerã®ããªã²ãŒããšããŠèªåèªèº«ã宣èšããŸãã
override func viewDidLoad() { super.viewDidLoad() fetchedResultsController.delegate = self do { try fetchedResultsController.performFetch() } catch { print(error) } }
ãã®ãããã³ã«ã®æ¬¡ã®å®è£
ã远å ããŸãã
æ¯èŒç倧ããªããªã¥ãŒã ã«ãããããã-ããã¯éåžžã«ç°¡åã§ãã ããã§ã¯ãã©ã®ãªããžã§ã¯ããšã©ã®ããã«æ£ç¢ºã«å€æŽããããã«é¢ããæ
å ±ãååŸãã倿Žã®çš®é¡ã«å¿ããŠãããŸããŸãªã¢ã¯ã·ã§ã³ãå®è¡ããŸãã
- æ¿å
¥ ïŒæ¿å
¥ïŒ-æå®ãããã€ã³ããã¯ã¹ã«æ°ããè¡ãæ¿å
¥ããŸãïŒè¡ã¯ãªã¹ãã®æåŸã ãã§ãªããæå®ããããœãŒãã«åŸã£ãŠãªã¹ãå
ã®ãã®å Žæã«è¿œå ãããŸãïŒ
- æŽæ° -ãªããžã§ã¯ãããŒã¿ã倿ŽãããŸãããæå®ãããã€ã³ããã¯ã¹ã§ãªã¹ãããè¡ãååŸããããã«é¢ããæ
å ±ãæŽæ°ããŸã
- ç§»å -è¡ã®é åºã倿ŽãããïŒããšãã°ã顧客ã®ååã倿ŽãããçŸåšå¥ã®å Žæã§ã®äžŠã¹æ¿ãã«åŸã£ãŠé
眮ãããŠããïŒãå
ã®å Žæããè¡ãåé€ããæ°ããã€ã³ããã¯ã¹ã§è¿œå ãã
- åé€ -æå®ããã€ã³ããã¯ã¹ã®è¡ãåé€ããŸãã
ãŸãã2ã€ã®ãè£å©ã颿°
controllerWillChangeContent
ãš
controllerDidChangeContent
ããããããã«å¿ããŠãããŒã¿å€æŽã®éå§ãšçµäºãéç¥ããŸãã ãããã®é¢æ°ã䜿çšããŠã衚瀺ããããŒã¿ã®äžéšã倿Žããããšã
Table View
ã«éç¥ããŸãïŒãããæ£ããæ©èœããããã«å¿
èŠã§ãïŒã
顧客ã®åé€ãå®è£
ããããã«ã®ã¿æ®ããŸãã ããã¯éåžžã«ç°¡åã«è¡ããã1ã€ã®å°ããªæé ãåå®çŸ©ããå¿
èŠããããŸãã
override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { if editingStyle == .Delete { let managedObject = fetchedResultsController.objectAtIndexPath(indexPath) as! NSManagedObject CoreDataManager.instance.managedObjectContext.deleteObject(managedObject) CoreDataManager.instance.saveContext() } }
åé€ã³ãã³ããå°çãããšãçŸåšã®ãªããžã§ã¯ããã€ã³ããã¯ã¹ã§ååŸããåé€ããããã«ç®¡çã³ã³ããã¹ãã«æž¡ããŸãã åé€ãããªããžã§ã¯ãã®ã¿ã€ãã¯
NSManagedObject
ãªããã°ãªããªãããšã«æ³šæããŠãã ããã
ããã§ããã£ã¬ã¯ããªãCustomersãã§ã®äœæ¥ãå®äºããŸããã ã¢ããªã±ãŒã·ã§ã³ãå®è¡ããŠããã®åäœã確èªããŸãããã


ã芧ã®ãšããã
Core Dataã¯æšæºã®ã€ã³ã¿ãŒãã§ã€ã¹èŠçŽ ãšå®å
šã«çµã¿åããããŠããŸãã
ã¢ãžã¥ãŒã«ããã¹ãCustomersTableViewController.swift åç
§ããµãŒãã¹ã
ç§ãã¡ãæã£ãŠãããµãŒãã¹ã®ãã£ã¬ã¯ããªã¯ã顧客ã®ãã£ã¬ã¯ããªãšåãæ§é ãšããžãã¯ãæã£ãŠããŸãã éãã¯æå°éã§ãããããããã§ã¯ãã¹ãŠã詳现ã«èª¬æããã®ã§ã¯ãªããç°¡åãªæé ã説æããŸãïŒãã®æŠèŠã«åŸã£ãŠãã¹ãŠãèªåã§ç°¡åã«è¡ãããšç¢ºä¿¡ããŠããŸãïŒã
- æ°ããTable View Controllerãäœæããããã
«Services»
ãã¿ã³ã«ãã€ã³ãããŸã - æ°ããã¯ã©ã¹
ServicesTableViewController
äœæããŠå²ãåœãŠãïŒ UITableViewController
åºã¥ãïŒ - importïŒ
import
ïŒ CoreData
ã fetchedResultsController
ïŒ Service
ãšã³ãã£ãã£ã«åºã¥ãïŒã远å ããã³ã³ãããŒã©ãŒãããŒããããããã³ã³ãããŒã©ãŒãèµ·åããŠå®è¡ããŸã - Table View Data Sourceãå®è£
ããããã®2ã€ã®ããã·ãŒãžã£ã远å ããŸãã1ã€ç®ã¯è¡æ°ãè¿ãã2ã€ç®ã¯æå®ãããã€ã³ããã¯ã¹ã®ãªããžã§ã¯ãã«é¢ããæ
å ±ãå«ãè¡ãè¿ããŸã
- æ°ããView ControllerãäœæããŠããµãŒãã¹ã®ãã«ãŒããã衚瀺ãããã®äžã«ã€ã³ã¿ãŒãã§ãŒã¹èŠçŽ ãé
眮ããŸãïŒãã¹ãŠã顧客ã®ãã«ãŒããã«äŒŒãŠããŸãïŒ
- ãã®ã³ã³ãããŒã©ãŒã®æ°ããã¯ã©ã¹
ServiceViewController
ïŒ ServiceViewController
åºã¥ãïŒãäœæããŠå²ãåœãŠã - 2ã€ã®ã¢ã¯ã·ã§ã³ ïŒ[
Save
Cancel
ãš[ Cancel
ïŒãš2ã€ã®ã¢ãŠãã¬ãã ïŒ name
ãšinfo
ãã£ãŒã«ãïŒãäœæ - å¿
èŠãªã³ãŒãã远å ããŸãïŒå€æ°
service
宣èšãããªããžã§ã¯ãã®ããŒããšä¿åã®æé ãèŠå®ããŸããæžã蟌ã¿åã«ããŒã¿ããã§ãã¯ããããšãå¿ããªãã§ãã ããïŒ ServiceViewController
ãšããååã®ServicesTableViewController
ãšServiceViewController
éã«æ¥ç¶ã远å ãservicesToService
ïŒ Segue \ Present Modally
ïŒServicesTableViewController
æ»ãã[ 远å ]ãã¿ã³ã远å ããŠæ°ãããµãŒãã¹ïŒ Navigation Item \ Bar Button Item
ïŒã远å ãã AddService
ãšããã¢ã¯ã·ã§ã³ãäœæããŸã- æ°ããããµãŒãã¹ãã®ã«ãŒããžã®ç§»è¡ã«å¿
èŠãªã³ãŒããç»é²ãã Table View Delegateã¡ãœãããå®è£
ããŸãïŒéžæãããµãŒãã¹ã®ãã«ãŒããã«ç§»åããŸãïŒ
NSFetchedResultsControllerDelegate
ãããã³ã«NSFetchedResultsControllerDelegate
ãå®è£
ããçŸåšã®ã¯ã©ã¹ãããªã²ãŒããšããŠå®£èšããŸã- ãã¹ãŠãã§ãã¯ïŒ
ã¢ãžã¥ãŒã«ããã¹ãServicesTableViewController.swift ServiceViewController.swiftã¢ãžã¥ãŒã«ããã¹ã 次ã®ãããªãã®ãåŸãããã¯ãã§ãã

ææž
åããã¥ã¡ã³ãã¯ãæåã¯2ã€ã®ç°ãªããšã³ãã£ãã£ã«ãã£ãŠè¡šããããããããã¥ã¡ã³ãã§ã¯ããå°ãè€éã«ãªããŸããæ¬¡ã«ãé¢ä¿ããããŸããã€ãŸããäœããã®æ¹æ³ã§å€ã®éžæãä¿èšŒããå¿
èŠããããŸããã·ã³ãã«ã§æ¢ã«éŠŽæã¿ã®ãããã®ããå§ããŸããã- ããã¥ã¡ã³ãã®ãªã¹ããšããã¥ã¡ã³ãèªäœã衚瀺ããView ControllerãåããTable View ControllerãäœæããŸãïŒãããŸã§ã¯è©³çްãªãã§ã空çœã®ã¿ïŒãç§ã¯ãããç¹°ãè¿ããªã-ãã¹ãŠããã£ã¬ã¯ããªãšåãã¢ã«ãŽãªãºã ã«åŸã£ãŠã2ã€ã®æ°ããã³ã³ãããŒã©ãŒãäœæããŸãïŒããã¥ã¡ã³ãã®ãªã¹ãçšã®Table View Controllerããã³ããã¥ã¡ã³ãèªäœçšã®View ControllerïŒïŒã¢ã¯ã·ã§ã³ã®è¿œå ããããã³ã«ã®äœæããã³å®è£
ïŒ
fetchedResultsController
ããã¥ã¡ã³ãèªäœã«ç©ºçœãäœæããŸãã
ã¢ãžã¥ãŒã«ããã¹ãOrdersTableViewController.swift ããã€ãã®ã¡ã¢ïŒfetchedResultsController
ãœãŒãçšã®ãã£ãŒã«ããäœæãããšãããæ¥ä»ããšããŠæå®ããŸããã€ãŸããããã¥ã¡ã³ãã¯æ¥ä»ã§ãœãŒããããŸã- ç¬ç«ãããã«ããŒé¢æ°ã䜿çšããŠã»ã«ãæ§ç¯ããŸã
configCell
- ææžãšé¡§å®¢ãšã®æ¥ç¶ã¯1察1ã§ç¢ºç«ããããããã»ã«ã®ããã¹ããäœæãããšãã«è¡ããããããä»ããŠãããã«ã¢ã¯ã»ã¹ã§ããŸãã
ããã§ããã¥ã¡ã³ãã®ãžã£ãŒãã«ã宿ããŸãããããã¥ã¡ã³ãèªäœãäœæããå¿
èŠããããŸãã3ã€ã®ã»ã¯ã·ã§ã³ïŒ2ã€ã®ãã£ã¬ã¯ããªãšããã¥ã¡ã³ãïŒããã¹ãŠïŒå®è£
ã®èгç¹ããïŒéåžžã«é¡äŒŒããŠããããšã倿ãã1ã€ã®æ®éçãªã¯ã©ã¹ãšã³ã³ãããŒã©ãŒã§ã¯ãªããç°ãªãã¯ã©ã¹ãšã³ã³ãããŒã©ãŒã䜿çšããããšãæãŸãããšããçåãçããããšã«æ³šæããŠãã ããããã®ã¢ãããŒããå¯èœã§ãããã³ã³ãããŒã©ãŒã®é¡äŒŒæ§ã¯ãå®éã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãšã³ãã£ãã£ãéåžžã«åçŽãªããŒã¿ã¢ãã«ã§ãããããååãšããŠäŸç¶ãšããŠå€§ããç°ãªãããã®çµæãã³ã³ãããŒã©ãŒãšã€ã³ã¿ãŒãã§ã€ã¹ãœãªã¥ãŒã·ã§ã³ããŸã£ããç°ãªã£ãŠèŠããŸããæãè峿·±ãã®ã¯ãããã¥ã¡ã³ãã§ããå¿
èŠãªãã¹ãŠã®ã€ã³ã¿ãŒãã§ã€ã¹èŠçŽ ãåæ ããŠã¿ãŸãããã- ããã¥ã¡ã³ãã®æ¥ä» - æ¥ä»ããã«ãŒã¯ããã«é©ããŠããŸã
- â : ( )
- â Switch
- â
- â Table View . , «» , .
ããã¯æ¬¡ã®ãããªãã®ã«ãªããŸãïŒãã¡ããããã¶ã€ã³ã¯ææªã§ãããããã¯äž»ãªãã®ã§ã¯ãããŸããã
ä»ã¯å¥ã®ç®æšããããŸãïŒïŒããã§ã顧客ãéžæããããã»ã¹ãäœããã®åœ¢ã§æŽçããå¿
èŠããããŸããéžæãããªããžã§ã¯ããã³ã³ãããŒã©ãŒã«æ»ããããã¥ã¡ã³ãã§äœ¿çšã§ããããã«ããŸããéåžžãããã«ã¯å§ä»»ã¡ã«ããºã ã䜿çšãããŸããã€ãŸããå¿
èŠãªãããã³ã«ã®äœæãšãã®å®è£
ã§ããããããç§ãã¡ã¯å察ã«è¡ããŸã-ããã§ã¯ã¯ããŒãžã£ãŒã䜿çšããŠã³ã³ããã¹ããã£ããã£ã䜿çšããŸãïŒãã®ããšèªäœã«ç¹åããèšäºããããããã¡ã«ããºã èªäœã«ã€ããŠã¯è©³ãã説æããŸããïŒãå°ãã§ãé£ããã¯ãããŸããããå®è£
ã¯ããéãããããšã¬ã¬ã³ãã«èŠããŸããå°æ¥ã顧客ãšåæ§ã«ãµãŒãã¹ãéžæããå¿
èŠãããããšãèæ
®ãããšããªã¹ãããå€ãéžæããããã®å¥ã®ãŠãããŒãµã«ã³ã³ãããŒã©ãŒãäœæã§ããŸãããæéãç¯çŽããããã«ãåœç€Ÿãäœæããæ¢è£œã®ã³ã³ãããŒã©ãŒïŒé¡§å®¢ã®ãªã¹ããšãµãŒãã¹ã®ãªã¹ãïŒãŸãã¯ãåå ããŠã¿ãŸããããã¥ãŒã³ã³ãããŒã©ã«ããŠãåœç€Ÿã®ææžã衚ãã¥ãŒã³ã³ãããŒã©ã®ãå©çšã®ã客æ§ãªã¹ãã»ã°ãšã®ã
ãããŠããã®é·ç§»ã®åŒã³åºããé¡§å®¢éžæãã¿ã³ã§ç»é²ããŸãã @IBAction func choiceCustomer(sender: AnyObject) { performSegueWithIdentifier("orderToCustomers", sender: nil) }
ãŸããã³ã³ããã¹ããã£ããã£ãå®è£
ããã«ã¯ãè«è² æ¥è
ã®ãªã¹ãã®è¡šç€ºãæ
åœããã³ã³ãããŒã©ãŒã«å°ããªå€æŽãå ããå¿
èŠããããŸãïŒCustomersTableViewController.swift
ïŒããŸããã¯ããŒãžã£ãŒå€æ°ã远å ããå¿
èŠããããŸãã
次ã«ããªã¹ãã®çŸåšã®è¡ãéžæããæé ã倿ŽããŸãã override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { let customer = fetchedResultsController.objectAtIndexPath(indexPath) as? Customer if let dSelect = self.didSelect { dSelect(customer) dismissViewControllerAnimated(true, completion: nil) } else { performSegueWithIdentifier("customersToCustomer", sender: customer) } }
ããžãã¯ã«æ³šæããŠãã ããããªãã·ã§ã³ã®ã¯ããŒãžã£ãŒå€æ°ã䜿çšããŸããå®çŸ©ãããŠããªãå Žåããªã¹ãã¯éåžžââã©ããæ©èœããŸããããŒã¿ã远å ããã³ç·šéããã¢ãŒãã§ãå®çŸ©ãããŠããå Žåããªã¹ãã¯ããã¥ã¡ã³ãããåŒã³åºãããŠé¡§å®¢ãéžæããŸããããã¥ã¡ã³ãã³ã³ãããŒã©ãŒã«æ»ããã¯ããŒãžã£ãŒãå®è£
ããŸããããããã®åã«ãããã¥ã¡ã³ããããŒãããŠä¿åããæé ãå®çŸ©ããŸããããã§ã®äœæ¥ã®ããžãã¯ã¯ããã£ã¬ã¯ããªã®æäœãšã¯å°ãç°ãªããŸããèŠããŠããããã«ãæ°ããããã¥ã¡ã³ããäœæãããšãã¯ããã¥ãŒãéããšãã«nilãšããã¥ã¡ã³ããªããžã§ã¯ãèªäœãæž¡ããŸããŸã ã§ãããã£ã¬ã¯ããªãæäœãããšãã«ãããæ°ã«ãªãããæžã蟌ãçŽåã«ãªããžã§ã¯ãèªäœãäœæããå Žåã¯ã衚éšåã®è¡ãç·šéãããšãã«ç¹å®ã®ææžãžã®ãªã³ã¯ãæäŸããå¿
èŠããããããææžã«å¯ŸããŠããã«äœæããŸããååãšããŠãçµ±äžã®ããã«åèæžã«åãã¢ãããŒãã䜿çšããããšã劚ãããã®ã¯äœããããŸããããç°ãªãã¢ãããŒãã瀺ãããã«ãäž¡æ¹ã®ãªãã·ã§ã³ãæ®ããŸãããããã£ãŠãããŒã¿ããã©ãŒã èŠçŽ ã«ãèªã¿èŸŒããæé ã¯æ¬¡ã®ããã«ãªããŸãã override func viewDidLoad() { super.viewDidLoad()
泚ïŒãªããžã§ã¯ããäœæãããšããç§ã¯ããã«ããã¥ã¡ã³ãã«çŸåšã®æ¥ä»ãå²ãåœãŠãŸããïŒã³ã³ã¹ãã©ã¯ã¿NSDate()
ã¯çŸåšã®æ¥ä»/æå»ãè¿ããŸãïŒãããŒã¿èšé²æé ïŒ func saveOrder() { if let order = order { order.date = dataPicker.date order.made = switchMade.on order.paid = switchPaid.on CoreDataManager.instance.saveContext() } }
æåŸã«ãCustomerã»ã¬ã¯ã·ã§ã³ã®ã¯ããŒãžã£ãå®è£
ããŸããããããã¯éåžžã«ç°¡åã§ãã override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if segue.identifier == "orderToCustomers" { let viewController = segue.destinationViewController as! CustomersTableViewController viewController.didSelect = { [unowned self] (customer) in if let customer = customer { self.order?.customer = customer self.textFieldCustomer.text = customer.name! } } } }
Table View Controllerã«åãæ¿ãããšãããã«å¿ããŠãã³ãã©ãŒãå®çŸ©ããŸãããã®ãã³ãã©ãŒã¯ã顧客ãéžæãããšãã«ããããããã¥ã¡ã³ããªããžã§ã¯ãã«å²ãåœãŠã察å¿ããããã¥ã¡ã³ãã³ã³ãããŒã«ã«é¡§å®¢ã®ååã衚瀺ããŸãããã®ã¡ã«ããºã ã§ã¯ã顧客ã®éžæãå®äºããŸãããã¹ãŠãæ£åžžã«æ©èœããããšã確èªããŸãããã

次ã«ã衚圢åŒã®ã»ã¯ã·ã§ã³ã«é²ã¿ãŸããããããã§ãã¹ãŠãããªãã¿ã®ã¯ãã§ããäœæããå¿
èŠãããããšã¯æããã§ããfetchedResultsController
ãšãããã³ã«ãå®è£
ããNSFetchedResultsControllerDelegate
ãUITableViewDataSource
ãšUITableViewDelegate
ããã ãã䜿çšããå Žåã¯ãã°ãããåŸ
ã¡ãã ããfetchedResultsController
åã®ãã®ãšåæ§ã«äœæãããŸã-å®éã«ã¯è¡šéšåã®ãã¹ãŠã®è¡ãååŸããŸããããããã¯ãã¹ãŠã®ããã¥ã¡ã³ãã®è¡ã§ããããŠãŒã¶ãŒãäœæ¥ããŠããçŸåšã®ããã¥ã¡ã³ãã®è¡ã®ã¿ãå¿
èŠã§ãããããè¡ãã«ã¯ãé©åãªãã£ã«ã¿ãŒãã«è¿œå ããå¿
èŠãããfetchRequest
ãŸããããã¯ãè¿°èªã¡ã«ããºã ïŒNSPredicate
ïŒã«ãã£ãŠè¡ãããŸããããã«ã€ããŠã¯èšäºã®æåŸã§ããå°ã説æããŸãOrder.swift
ãããšããããããã©ãŒã ã®ããã¥ã¡ã³ãã®è¡šéšåãè¿ãããã¥ã¡ã³ãïŒïŒã®ã¯ã©ã¹é¢æ°ã远å ããŸãããNSFetchedResultsController
ã class func getRowsOfOrder(order: Order) -> NSFetchedResultsController { let fetchRequest = NSFetchRequest(entityName: "RowOfOrder") let sortDescriptor = NSSortDescriptor(key: "service.name", ascending: true) fetchRequest.sortDescriptors = [sortDescriptor] let predicate = NSPredicate(format: "%K == %@", "order", order) fetchRequest.predicate = predicate let fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: CoreDataManager.instance.managedObjectContext, sectionNameKeyPath: nil, cacheName: nil) return fetchedResultsController }
次ã®ã³ãŒãè¡ã«æ³šæããŠãã ããã let sortDescriptor = NSSortDescriptor(key: "service.name", ascending: true)
ããã§ã¯ããªããžã§ã¯ãã®ãã¹ãããããã£ãŒã«ããããã€ã³ããä»ããŠããœãŒãããŒãšããŠèšå®ããŸããããã¯çŽ æŽãããæ©äŒã§ã¯ãããŸãããïŒããŠãåã³OrderViewController.swift
ãããŒãã«ããŒããå«ã倿°ã宣èšããView Controllerã®èªã¿èŸŒã¿æã«ããã¥ã¡ã³ãèªäœãåæåãããåŸã«åæåããå¿
èŠããããŸãã
ããã«æ°ããView ControllerãäœæããŠãããã¥ã¡ã³ãã®è¡ããŒã¿ã衚瀺ããæ°ããã¯ã©ã¹ãå²ãåœãŠRowOfOrderViewController
ãŸããå¿
èŠãªããã²ãŒã·ã§ã³ããã³å¶åŸ¡èŠçŽ Outletããã³Actionã远å ããŠããªããžã§ã¯ãã®èªã¿åãããã³æžã蟌ã¿ã®æé ãå®è£
ããŸãããŸããéé¡å
¥åãã£ãŒã«ãã«ã¯ããã³ããŒãããïŒKeyboard Type = Number Pad
ïŒãèšå®ããŸãã
次ã«ãorderToRowOfOrderãšããååã®Segueã远å ããŠïŒããã¥ã¡ã³ããšäœæããã°ããã®View Controllerãæ¥ç¶ããŸãïŒãããã¥ã¡ã³ãã«å¿
èŠãªãããã³ã«ã®ããªã²ãŒããå®è£
ããŸãããã¹ãŠã以åã®ã³ã³ãããŒã©ãŒãšåãã§ãããããã§æ ¹æ¬çã«æ°ãããã®ã¯äœããããŸããïŒã¢ãžã¥ãŒã«ã®å
šæã以äžã«ç€ºããŸãïŒããŸããææžã®è¡šã»ã¯ã·ã§ã³ã«è¡ã远å ãããã¿ã³ã远å ããŸããããæ³šæç¹ã1ã€ãããŸãã以åã«æ°ãããªããžã§ã¯ããäœæãããšãã«nilãæž¡ããããªããžã§ã¯ãèªäœãå¥ã®ã³ã³ãããŒã©ãŒã§äœæãããå Žåã衚ã»ã¯ã·ã§ã³ã®è¡ã®å Žåãäœããã®æ¹æ³ã§ç¹å®ã®ããã¥ã¡ã³ãããç»é²ãããå¿
èŠããããŸããããã¯ãããã°ã©ã ã®ããžãã¯ã«å¿ããŠãããŸããŸãªæ¹æ³ã§å®è¡ã§ããŸããæãæç¢ºã«ãã-nilã§ã¯ãªãããªããžã§ã¯ãïŒRowOfOrder
ïŒãæž¡ããŸãããªããžã§ã¯ãïŒïŒãäœæããããã«ããã¥ã¡ã³ããžã®ãªã³ã¯ãèšå®ããŸãã @IBAction func AddRowOfOrder(sender: AnyObject) { if let order = order { let newRowOfOrder = RowOfOrder() newRowOfOrder.order = order performSegueWithIdentifier("orderToRowOfOrder", sender: newRowOfOrder) } }
泚ïŒããŒã¿ã¢ãã«å
ã®ãšã³ãã£ãã£éã«æå®ãããéã®é¢ä¿ããã£ããããäœæãå¿é
ããå¿
èŠã¯ãããŸãããèªåçã«è¿œå ãããŸãã
ã¢ãžã¥ãŒã«ããã¹ãOrderViewController.swift ããã§ãããã¥ã¡ã³ãèªäœãšã®çŽæ¥çãªäœæ¥ãå®äºããŸãããããã¥ã¡ã³ãã®è¡ã«æ
å ±ã衚瀺ããView Controllerã§çµäºããŸããããã§ã¯ãããã¥ã¡ã³ãããããŒãæäœãããšããšãŸã£ããåãããžãã¯ã䜿çšããŸãããŸããééã«ããã³ã³ããã¹ãã®ãã£ããã£ãéããŠããµãŒãã¹ã®éžæãè¡ããŸãããŸããView Controllerãããã¥ã¡ã³ãã®è¡ã«æ¥ç¶ããTable View ControllerããµãŒãã¹ã®ãªã¹ãã«æ¥ç¶ããååã®ã»ã°ãšã远å ããŸããTable View Controllerãå°ãæ¹è¯ããŠãã¯ããŒãžã£ãŒã䜿çšã§ããããã«ããå¿
èŠããããŸãããŸããã¯ããŒãžã£ãŒå€æ°ã远å ããŸããrowOfOrderToServices
次ã«ããªã¹ãè¡éžææ©èœã倿ŽããŸãã override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { let service = fetchedResultsController.objectAtIndexPath(indexPath) as? Service if let dSelect = self.didSelect { dSelect(service) dismissViewControllerAnimated(true, completion: nil) } else { performSegueWithIdentifier("servicesToService", sender: service) } }
RowOfOrderViewController
ã¯ããŒãžã£ã«æ»ã£ãŠå®è£
ããŸããããããã§ã¯ããã¹ãŠã顧客ãéžæãããšããšåãåçã«åºã¥ããŠããŸãã @IBAction func choiceService(sender: AnyObject) { performSegueWithIdentifier("rowOfOrderToServices", sender: nil) } override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if segue.identifier == "rowOfOrderToServices" { let controller = segue.destinationViewController as! ServicesTableViewController controller.didSelect = {[unowned self] (service) in if let service = service { self.rowOfOrder!.service = service self.textFieldService.text = service.name } } } }
ã¢ãžã¥ãŒã«ããã¹ãRowOfOrderViewController.swift å®éãããã ãã§ãïŒããã§ããã¥ã¡ã³ãã®äœæ¥ã¯å®äºã§ãããã¹ãŠã確èªããŸãããã



éèŠãªãç¥ããïŒããã§ã¯ã[ ãã£ã³ã»ã« ]ãã¿ã³ã®ã¯ãªãã¯ãåŠçããªãã£ããããæ¬¡ã®ç¶æ³ãçºçããŸãããæ°ããããã¥ã¡ã³ããäœæããä¿åã«ã€ããŠã®èãã倿ŽããŠ[ ãã£ã³ã»ã«]ãã¯ãªãã¯ãããšãçŸåšã®ã³ã³ããã¹ãCore Dataãããããã¥ã¡ã³ããžã£ãŒãã«ã§ããã©ããããšããŠãã³ã°ãããŸãŸã«ãªããŸãã誰ããããåé€ããŸããã§ãããããã«æ»ã£ãŠèšå
¥ãç¶ããããšãã匷å¶çã«åé€ããããšãã§ããŸãããã ããã¡ã€ã³ã¡ãã¥ãŒã«æ»ã£ãŠããã¥ã¡ã³ããžã£ãŒãã«ãå床éããšãäžæžãã¯ãããŸããããžã£ãŒãã«ãéããšã¹ãã¬ãŒãžããããŒã¿ãèªã¿åãããããã§ããåãããšãææžè¡ã«ãåœãŠã¯ãŸããŸããç§ãã¡ã®ããã°ã©ã ã«ãšã£ãŠããã®æ¯ãèãã¯å°ãªããšãè«ççã«æããŸãããããããããããã®æ¯ãèãã¯ãããªããããªãã®ããã°ã©ã ã§æãã§ããããšãšã¯ãŸã£ããç°ãªããŸãããã®å Žåããã®ãããªã€ãã³ãã«å¿çããããã®ããžãã¯ãå®è£
ããå¿
èŠããããŸãããããã«ããŠããããã°ã©ã ã®åäœã¯ãŠãŒã¶ãŒã«ãšã£ãŠå®å
šã«æç¢ºã§ééçã§ããããšãå¿ããªãã§ãã ãããããã¥ã¡ã³ãã¬ããŒã
ãã®ã»ã¯ã·ã§ã³ã¯éåžžã«å°ãããªããŸãïŒåã®ã»ã¯ã·ã§ã³ãšæ¯èŒïŒãããå°ãNSFetchRequest
詳ããç¥ãããšãã§ããã®ã§ã詳ããèŠãŠãããŸããããããã«æ°ããTable View Controllerãäœæããããã«ReportTableViewController
åºã¥ããŠæ°ããã¯ã©ã¹ãäœæããŠå²ãåœãŠUITableViewController
ãŸããå®äºããæ¥ä»ã§ãœãŒãããããªã¹ãã衚瀺ããåçŽãªã¬ããŒãã®äŸ
ã䜿çšããããšãæ€èšNSFetchRequest
ããŸãããææã®ããã¥ã¡ã³ãã¯äœ¿çšããŸããããããè¡ãã«ã¯ã次ã®2ã€ã®åŒ·åãªããŒã«ã䜿çšããŸãNSFetchRequest
ãNSSortDescriptor
-ããŒã¿ãäžŠã¹æ¿ããNSPredicate
-ããŸããŸãªéžææ¡ä»¶ïŒãã£ã«ã¿ãŒïŒãèšå®ããŸãã
ããŒã¿ã®ãœãŒãããå§ããŸããããæ¬¡ã®å®çŸ©ãèŠãŠãã ããã var fetchRequest = NSFetchRequest(entityName: "Order")
ããã§ãæ°ããããŒã¿ãœãŒããªããžã§ã¯ãïŒNSSortDescriptor
ïŒãäœæããã³ã³ã¹ãã©ã¯ã¿ã«ãœãŒããã£ãŒã«ãã®ååãå«ãæååãæž¡ããç®çã®ãœãŒãæ¹åã瀺ããŸãïŒascending
ïŒtrue
-æé ãfalse
-éé ïŒãNSFetchRequest
ãœãŒããªããžã§ã¯ããé
åãšããŠãªããžã§ã¯ãã«æž¡ãããšã«æ³šæããŠãã ãããããã¯ã©ãããæå³ã§ããïŒã¯ããããã ãã§ã-é
åãšããŠè€æ°ã®äžŠã¹æ¿ãã«ãŒã«ãåæã«æž¡ãããšãã§ããŸãããŸããäžŠã¹æ¿ããã£ãŒã«ãã®å質ã¯ãããã€ã³ããä»ããŠãè€åãã£ãŒã«ããæå®ã§ããããšãæãåºããŸãïŒããã¯ãããã¥ã¡ã³ãã®è¡šéšåã®è¡ãäžŠã¹æ¿ãããšãã«è¡ããŸããïŒãæ¥ä»å
ã®é¡§å®¢ã®ååã§ããã¥ã¡ã³ãããœãŒãããããã«ã2çªç®ã®ãœãŒããªããžã§ã¯ãã远å ããŸãããã var fetchRequest:NSFetchRequest = { var fetchRequest = NSFetchRequest(entityName: "Order")
å®éã«ã¯ãããã§ãœãŒãããã¹ãŠå®äºããŸãããç§ãããªãã«æãåºãããå¯äžã®ããšã¯ãããªããç©æ¥µçã«ãœãŒãã䜿çšããŠããå Žåã䜿çšãããŠãããã£ãŒã«ãã®ã€ã³ããã¯ã¹ä»ãã®åŠ¥åœæ§ã«ã€ããŠèããããšãå¿ããªãã§ãã ãããè¿°èªã¡ã«ããºã ã«æž¡ããŸãã SQLã«äŒŒãã¯ãšãªã®ããã«èŠããããªãåçŽãªæ§æã䜿çšããŸããè¿°èªã¯æ¬¡ã®ããã«äœæããã³äœ¿çšãããŸãã
æžåŒæååãã³ã³ã¹ãã©ã¯ã¿ã«æž¡ããããã®åŸã«åŒæ°ãç¶ããŸãããã©ãŒãããæååã«å¿ããŠãæž¡ããããã©ã¡ãŒã¿ãŒã®æ°ã¯ç°ãªãå ŽåããããŸããæžåŒæååã詳ããèŠãŠã¿ãŸããã-ç¬èªã®ã¯ãšãªèšèªã®ãããªãã®ã䜿çšããŸãã " ïŒ
K "-ãªããžã§ã¯ãã®ãã£ãŒã«ãïŒããããã£ïŒã®ååãæå³ããŸãã " ïŒ
@ "-ãã®ãã£ãŒã«ãã®å€ã以äžã¯ãå³å¯ã«åãé åºã§ã®åŒæ°ïŒéžæã§çœ®ãæããå¿
èŠã®ããå®éã®å€ïŒã§ããã€ãŸãããã®ãã©ãŒãããæååã¯æ¬¡ãæå³ããŸãïŒOrder.made == trueãããªããããªãã ãã§ãæäœã䜿çšããããšãã§ããŸã==ãã<ã> =ãïŒ=ãªã©ãªã©ããŸããCONTAINSãLIKEãMATCHESãBEGINSWITHãENDSWITHãããã³ANDãORãªã©ã®ããŒã¯ãŒãã䜿çšããããšãã§ããŸããæ£èŠè¡šçŸã䜿çšããããšãã§ããŸããããã¯æ¬åœã«éåžžã«åŒ·åãªããŒã«ã§ããããã§ã¯ãã¹ãŠã®å¯èœãªãªãã·ã§ã³ããªã¹ãããŸãã;ãããã¯å
¬åŒã®Appleããã¥ã¡ã³ãã«ãã衚ãããŠããŸãããã£ãŒã«ãåã®åŒæ°ãšããŠã次ã®ããã«ã§ããŸããNSSortDescriptor
ãè€åãã£ãŒã«ãïŒããã€ã³ãããŒãã€ã³ããïŒã䜿çšããŸãããã ããè€æ°ã®è¿°èªãåæã«äœ¿çšããããšã¯ã§ããŸãããã代ããã«ãåäžã®è¿°èªã§ããè€éãªæ¡ä»¶ã䜿çšããå¿
èŠããããŸããããã念é ã«çœ®ããŠãã¬ããŒãã®æçµçãªè¿°èªã®å®çŸ©ã¯æ¬¡ã®ããã«ãªããŸãã var fetchRequest:NSFetchRequest = { var fetchRequest = NSFetchRequest(entityName: "Order")
UITableViewDataSourceãããã³ã«ãå®è£
ããã ãã§ããïŒããã¯æ¢ã«ç¥ã£ãŠããŸããããã§ã¯æ°ããããšã¯äœããããŸããïŒã確èªããããšãã§ããŸããReportTableViewController.swiftã¢ãžã¥ãŒã«ããã¹ã
ãã¹ãŠãæ£åžžã«æ©èœããæå®ãããæ¡ä»¶ã«åŸã£ãŠããã¥ã¡ã³ãã®ãªã¹ããååŸããŸãããã¹ããŒãªãŒããŒãã®æçµãã¥ãŒ ãããã«
äŸãšããŠåçŽãªã¢ããªã±ãŒã·ã§ã³ã䜿çšCore Data
ããŠãããªãçãæéã§å®å
šã«æ©èœããã¢ããªã±ãŒã·ã§ã³ãæäœããã³åä¿¡ãããã¹ãŠã®äž»èŠãªãã€ã³ãã調ã¹ãŸããããã¡ããããã¶ã€ã³ã«ã¯å°ãªããšãæ¹åãå¿
èŠã§ããããã®åºçç©ã«ã¯å¥ã®ç®çããããŸãããããŒã¿ãŠã§ã¢ããŠã¹ã®çµç¹åãäžè²«æ§ã®ãã§ãã¯ãªã©ãããŒã¿ã䜿çšãããã¹ãŠã®çŽæ¥äœæ¥ã¯ãè£åŽãã«é ãããŠããããšãæ¹ããŠæ³šç®ãã䟡å€Core Data
ããããŸããå®éã«ã¯ããã«ã€ããŠã¯èããŸããã§ããããéåžžã®OOPãªããžã§ã¯ããšåæ§ã«ç®¡ç察象ãªããžã§ã¯ãã§äœæ¥ããŸãã ç§ã®æèŠã§ã¯ãiOSéçºè
ã«å¿
èŠãªãã§äœæ¥ããããã®åºæ¬çãªãã¯ããã¯ãéåžžã«æç¢ºã«èª¬æã§ããããšãé¡ã£ãŠãCore Data
ãŸããããªããæããããšããããå°ãªããšãå°ãã¯æã«èœã¡ããçŽ æŽãããããšã§ãCore Data
ããæž
èŽããããšãããããŸããã
ãã®ãããžã§ã¯ãã¯githubã«ãããŸã