Modify this IOS program
My Contact List/My Contact List/Constants.swift
// // Constants.swift // My Contact List // // Created by Michael Eierman on 8/6/19. // Copyright © 2019 Learning Mobile Apps. All rights reserved. // import Foundation struct Constants { static let kSortField = "sortField" static let kSortDirectionAscending = "sortDirectionAscending" }
__MACOSX/My Contact List/My Contact List/._Constants.swift
My Contact List/My Contact List/MyContactListModel.xcdatamodeld/MyContactListModel.xcdatamodel/contents
__MACOSX/My Contact List/My Contact List/MyContactListModel.xcdatamodeld/._MyContactListModel.xcdatamodel
__MACOSX/My Contact List/My Contact List/._MyContactListModel.xcdatamodeld
My Contact List/My Contact List/MapViewController.swift
// // MapViewController.swift // My Contact List // // Created by Michael Eierman on 8/5/19. // Copyright © 2019 Learning Mobile Apps. All rights reserved. // import UIKit class MapViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. } /* // MARK: - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation override func prepare(for segue: UIStoryboardSegue, sender: Any?) { // Get the new view controller using segue.destination. // Pass the selected object to the new view controller. } */ }
__MACOSX/My Contact List/My Contact List/._MapViewController.swift
My Contact List/My Contact List/Assets.xcassets/sample-881-globe.imageset/sample-401-globe.png
My Contact List/My Contact List/Assets.xcassets/sample-881-globe.imageset/[email protected]
My Contact List/My Contact List/Assets.xcassets/sample-881-globe.imageset/Contents.json
{ "images" : [ { "idiom" : "universal", "filename" : "sample-401-globe.png", "scale" : "1x" }, { "idiom" : "universal", "filename" : "[email protected]", "scale" : "2x" }, { "idiom" : "universal", "scale" : "3x" } ], "info" : { "version" : 1, "author" : "xcode" } }
My Contact List/My Contact List/Assets.xcassets/AppIcon.appiconset/Contents.json
{ "images" : [ { "idiom" : "iphone", "size" : "20x20", "scale" : "2x" }, { "idiom" : "iphone", "size" : "20x20", "scale" : "3x" }, { "idiom" : "iphone", "size" : "29x29", "scale" : "2x" }, { "idiom" : "iphone", "size" : "29x29", "scale" : "3x" }, { "idiom" : "iphone", "size" : "40x40", "scale" : "2x" }, { "idiom" : "iphone", "size" : "40x40", "scale" : "3x" }, { "idiom" : "iphone", "size" : "60x60", "scale" : "2x" }, { "idiom" : "iphone", "size" : "60x60", "scale" : "3x" }, { "idiom" : "ipad", "size" : "20x20", "scale" : "1x" }, { "idiom" : "ipad", "size" : "20x20", "scale" : "2x" }, { "idiom" : "ipad", "size" : "29x29", "scale" : "1x" }, { "idiom" : "ipad", "size" : "29x29", "scale" : "2x" }, { "idiom" : "ipad", "size" : "40x40", "scale" : "1x" }, { "idiom" : "ipad", "size" : "40x40", "scale" : "2x" }, { "idiom" : "ipad", "size" : "76x76", "scale" : "1x" }, { "idiom" : "ipad", "size" : "76x76", "scale" : "2x" }, { "idiom" : "ipad", "size" : "83.5x83.5", "scale" : "2x" }, { "idiom" : "ios-marketing", "size" : "1024x1024", "scale" : "1x" } ], "info" : { "version" : 1, "author" : "xcode" } }
My Contact List/My Contact List/Assets.xcassets/second.imageset/second.pdf
My Contact List/My Contact List/Assets.xcassets/second.imageset/Contents.json
{ "images" : [ { "idiom" : "universal", "filename" : "second.pdf" } ], "info" : { "version" : 1, "author" : "xcode" } }
__MACOSX/My Contact List/My Contact List/Assets.xcassets/second.imageset/._Contents.json
My Contact List/My Contact List/Assets.xcassets/first.imageset/Contents.json
{ "images" : [ { "idiom" : "universal", "filename" : "first.pdf" } ], "info" : { "version" : 1, "author" : "xcode" } }
__MACOSX/My Contact List/My Contact List/Assets.xcassets/first.imageset/._Contents.json
My Contact List/My Contact List/Assets.xcassets/first.imageset/first.pdf
My Contact List/My Contact List/Assets.xcassets/Contents.json
{ "info" : { "version" : 1, "author" : "xcode" } }
My Contact List/My Contact List/Assets.xcassets/sample-834-bolt.imageset/[email protected]
My Contact List/My Contact List/Assets.xcassets/sample-834-bolt.imageset/Contents.json
{ "images" : [ { "idiom" : "universal", "scale" : "1x" }, { "idiom" : "universal", "filename" : "[email protected]", "scale" : "2x" }, { "idiom" : "universal", "scale" : "3x" } ], "info" : { "version" : 1, "author" : "xcode" } }
My Contact List/My Contact List/ContactsViewController.swift
// // ContactsViewController.swift // My Contact List // // Created by Michael Eierman on 8/5/19. // Copyright © 2019 Learning Mobile Apps. All rights reserved. // import UIKit import CoreData class ContactsViewController: UIViewController, UITextFieldDelegate, DateControllerDelegate { var currentContact: Contact? let appDelegate = UIApplication.shared.delegate as! AppDelegate @IBOutlet weak var scrollView: UIScrollView! @IBOutlet weak var txtName: UITextField! @IBOutlet weak var txtAddress: UITextField! @IBOutlet weak var txtCity: UITextField! @IBOutlet weak var txtState: UITextField! @IBOutlet weak var txtZip: UITextField! @IBOutlet weak var txtCell: UITextField! @IBOutlet weak var txtPhone: UITextField! @IBOutlet weak var txtEmail: UITextField! @IBOutlet weak var lblBirthdate: UILabel! @IBOutlet weak var btnChange: UIButton! @IBOutlet weak var sgmtEditMode: UISegmentedControl! @IBAction func changeEditMode(_ sender: Any) { let textFields: [UITextField] = [txtName, txtAddress, txtCity, txtState, txtZip, txtPhone, txtCell, txtEmail] if sgmtEditMode.selectedSegmentIndex == 0 { for textField in textFields { textField.isEnabled = false textField.borderStyle = UITextField.BorderStyle.none } btnChange.isHidden = true navigationItem.rightBarButtonItem = nil } else if sgmtEditMode.selectedSegmentIndex == 1{ for textField in textFields { textField.isEnabled = true textField.borderStyle = UITextField.BorderStyle.roundedRect } btnChange.isHidden = false navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .save, target: self, action: #selector(self.saveContact)) } } func textFieldShouldEndEditing(_ textField: UITextField) -> Bool { if currentContact == nil { let context = appDelegate.persistentContainer.viewContext currentContact = Contact(context: context) } currentContact?.contactName = txtName.text currentContact?.streetAddress = txtAddress.text currentContact?.city = txtCity.text currentContact?.state = txtState.text currentContact?.zipCode = txtZip.text currentContact?.cellNumber = txtCell.text currentContact?.phoneNumber = txtPhone.text currentContact?.email = txtEmail.text return true } @objc func saveContact() { appDelegate.saveContext() sgmtEditMode.selectedSegmentIndex = 0 changeEditMode(self) } override func viewDidLoad() { super.viewDidLoad() if currentContact != nil { txtName.text = currentContact!.contactName txtAddress.text = currentContact!.streetAddress txtCity.text = currentContact!.city txtState.text = currentContact!.state txtZip.text = currentContact!.zipCode txtPhone.text = currentContact!.phoneNumber txtCell.text = currentContact!.cellNumber txtEmail.text = currentContact!.email let formatter = DateFormatter() formatter.dateStyle = .short if currentContact!.birthday != nil { lblBirthdate.text = formatter.string(from: currentContact!.birthday!) } } self.changeEditMode(self) let textFields: [UITextField] = [txtName, txtAddress, txtCity, txtState, txtZip, txtPhone, txtCell, txtEmail] for textfield in textFields { textfield.addTarget(self, action: #selector(UITextFieldDelegate.textFieldShouldEndEditing(_:)), for: UIControl.Event.editingDidEnd) } } func dateChanged(date: Date) { if currentContact == nil { let context = appDelegate.persistentContainer.viewContext currentContact = Contact(context: context) } currentContact?.birthday = date let formatter = DateFormatter() formatter.dateStyle = .short lblBirthdate.text = formatter.string(from: date) } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) self.registerKeyboardNotifications() } override func viewWillDisappear(_ animated: Bool) { super.viewWillDisappear(animated) self.unregisterKeyboardNotifications() } func registerKeyboardNotifications() { NotificationCenter.default.addObserver(self, selector: #selector(ContactsViewController.keyboardDidShow(notification:)), name: UIResponder.keyboardDidShowNotification, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(ContactsViewController.keyboardWillHide(notification:)), name: UIResponder.keyboardWillHideNotification, object: nil) } func unregisterKeyboardNotifications() { NotificationCenter.default.removeObserver(self) } @objc func keyboardDidShow(notification: NSNotification) { let userInfo: NSDictionary = notification.userInfo! as NSDictionary let keyboardInfo = userInfo[UIResponder.keyboardFrameBeginUserInfoKey] as! NSValue let keyboardSize = keyboardInfo.cgRectValue.size // Get the existing contentInset for the scrollView and set the bottom property to //be the height of the keyboard var contentInset = self.scrollView.contentInset contentInset.bottom = keyboardSize.height self.scrollView.contentInset = contentInset self.scrollView.scrollIndicatorInsets = contentInset } @objc func keyboardWillHide(notification: NSNotification) { var contentInset = self.scrollView.contentInset contentInset.bottom = 0 self.scrollView.contentInset = contentInset self.scrollView.scrollIndicatorInsets = UIEdgeInsets.zero } /* // MARK: - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation override func prepare(for segue: UIStoryboardSegue, sender: Any?) { // Get the new view controller using segue.destination. // Pass the selected object to the new view controller. } */ override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if(segue.identifier == "segueContactDate"){ let dateController = segue.destination as! DateViewController dateController.delegate = self } } }
__MACOSX/My Contact List/My Contact List/._ContactsViewController.swift
My Contact List/My Contact List/Base.lproj/LaunchScreen.storyboard
__MACOSX/My Contact List/My Contact List/Base.lproj/._LaunchScreen.storyboard
My Contact List/My Contact List/Base.lproj/Main.storyboard
__MACOSX/My Contact List/My Contact List/Base.lproj/._Main.storyboard
My Contact List/My Contact List/AppDelegate.swift
// // AppDelegate.swift // My Contact List // // Created by Michael Eierman on 8/2/19. // Copyright © 2019 Learning Mobile Apps. All rights reserved. // import UIKit import CoreData @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. let settings = UserDefaults.standard if settings.string(forKey: Constants.kSortField) == nil { settings.set("city", forKey: Constants.kSortField) } if settings.string(forKey: Constants.kSortDirectionAscending) == nil { settings.set(true, forKey: Constants.kSortDirectionAscending) } settings.synchronize() NSLog("Sort field: %@", settings.string(forKey: Constants.kSortField)!) NSLog("Sort direction: \(settings.bool(forKey: Constants.kSortDirectionAscending))") return true } func applicationWillResignActive(_ application: UIApplication) { // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. } func applicationDidEnterBackground(_ application: UIApplication) { // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. } func applicationWillEnterForeground(_ application: UIApplication) { // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. } func applicationDidBecomeActive(_ application: UIApplication) { // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. } func applicationWillTerminate(_ application: UIApplication) { // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. } lazy var persistentContainer: NSPersistentContainer = { /* The persistent container for the application. This implementation creates and returns a container, having loaded the store for the application to it. This property is optional since there are legitimate error conditions that could cause the creation of the store to fail. */ let container = NSPersistentContainer(name: "MyContactListModel") container.loadPersistentStores(completionHandler: { (storeDescription, error) in if let error = error as NSError? { // Replace this implementation with code to handle the error appropriately. // fatalError() causes the application to generate a crash log and terminate. You should // not use this function in a shipping application, although it may be useful during // development. /* Typical reasons for an error here include: * The parent directory does not exist, cannot be created, or disallows writing. * The persistent store is not accessible, due to permissions or data protection when * the device is locked. * The device is out of space. * The store could not be migrated to the current model version. Check the error message to determine what the actual problem was. */ fatalError("Unresolved error \(error), \(error.userInfo)") } }) return container }() // MARK: - Core Data Saving support func saveContext () { let context = persistentContainer.viewContext if context.hasChanges { do { try context.save() } catch { // Replace this implementation with code to handle the error appropriately. // fatalError() causes the application to generate a crash log and terminate. You should // not use this function in a shipping application, although it may be useful during // development. let nserror = error as NSError fatalError("Unresolved error \(nserror), \(nserror.userInfo)") } } } }
__MACOSX/My Contact List/My Contact List/._AppDelegate.swift
My Contact List/My Contact List/ContactsTableViewController.swift
// // ContactsTableViewController.swift // My Contact List // // Created by Michael Eierman on 8/6/19. // Copyright © 2019 Learning Mobile Apps. All rights reserved. // import UIKit import CoreData class ContactsTableViewController: UITableViewController { // let contacts = ["Jim", "John", "Dana", "Rosie", "Justin", "Jeremy", "Sarah", "Matt", "Joe", "Donald", "Jeff"] var contacts:[NSManagedObject] = [] let appDelegate = UIApplication.shared.delegate as! AppDelegate override func viewDidLoad() { super.viewDidLoad() self.navigationItem.leftBarButtonItem = self.editButtonItem loadDataFromDatabase() } override func viewWillAppear(_ animated: Bool) { loadDataFromDatabase() tableView.reloadData() } func loadDataFromDatabase() { let settings = UserDefaults.standard let sortField = settings.string(forKey: Constants.kSortField) let sortAscending = settings.bool(forKey: Constants.kSortDirectionAscending) //Set up Core Data Context let context = appDelegate.persistentContainer.viewContext //Set up Request let request = NSFetchRequest<NSManagedObject>(entityName: "Contact") //Specify sorting let sortDescriptor = NSSortDescriptor(key: sortField, ascending: sortAscending) let sortDescriptorArray = [sortDescriptor] //to sort by multiple fields, add more sort descriptors to the array request.sortDescriptors = sortDescriptorArray do { contacts = try context.fetch(request) } catch let error as NSError { print("Could not fetch. \(error), \(error.userInfo)") } } // MARK: - Table view data source override func numberOfSections(in tableView: UITableView) -> Int { return 1 } override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return contacts.count } override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "ContactsCell", for: indexPath) // Configure the cell... let contact = contacts[indexPath.row] as? Contact cell.textLabel?.text = contact?.contactName cell.detailTextLabel?.text = contact?.city cell.accessoryType = .detailDisclosureButton return cell } override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { let selectedContact = contacts[indexPath.row] as? Contact let name = selectedContact!.contactName! let actionHandler = { (action:UIAlertAction!) -> Void in let storyboard = UIStoryboard(name: "Main", bundle: nil) let controller = storyboard.instantiateViewController(withIdentifier: "ContactController") as? ContactsViewController controller?.currentContact = selectedContact self.navigationController?.pushViewController(controller!, animated: true) } let alertController = UIAlertController(title: "Contact selected", message: "Selected row: \(indexPath.row) (\(name))", preferredStyle: .alert) let actionCancel = UIAlertAction(title: "Cancel", style: .cancel, handler: nil) let actionDetails = UIAlertAction(title: "Show Details", style: .default, handler: actionHandler) alertController.addAction(actionCancel) alertController.addAction(actionDetails) present(alertController, animated: true, completion: nil) } /* // Override to support conditional editing of the table view. override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool { // Return false if you do not want the specified item to be editable. return true } */ override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) { if editingStyle == .delete { // Delete the row from the data source let contact = contacts[indexPath.row] as? Contact let context = appDelegate.persistentContainer.viewContext context.delete(contact!) do { try context.save() } catch { fatalError("Error saving context: \(error)") } loadDataFromDatabase() tableView.deleteRows(at: [indexPath], with: .fade) } else if editingStyle == .insert { // Create a new instance of the appropriate class, insert it into the array, //and add a new row to the table view } } /* // Override to support rearranging the table view. override func tableView(_ tableView: UITableView, moveRowAt fromIndexPath: IndexPath, to: IndexPath) { } */ /* // Override to support conditional rearranging of the table view. override func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool { // Return false if you do not want the item to be re-orderable. return true } */ /* // MARK: - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation override func prepare(for segue: UIStoryboardSegue, sender: Any?) { // Get the new view controller using segue.destination. // Pass the selected object to the new view controller. } */ override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier == "EditContact" { let contactController = segue.destination as? ContactsViewController let selectedRow = self.tableView.indexPath(for: sender as! UITableViewCell)?.row let selectedContact = contacts[selectedRow!] as? Contact contactController?.currentContact = selectedContact! } } }
__MACOSX/My Contact List/My Contact List/._ContactsTableViewController.swift
My Contact List/My Contact List/DateViewController.swift
// // DateViewController.swift // My Contact List // // Created by Michael Eierman on 8/6/19. // Copyright © 2019 Learning Mobile Apps. All rights reserved. // import UIKit protocol DateControllerDelegate: class { func dateChanged(date: Date) } class DateViewController: UIViewController { weak var delegate: DateControllerDelegate? @IBOutlet weak var dtpDate: UIDatePicker! override func viewDidLoad() { super.viewDidLoad() let saveButton: UIBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.save, target: self, action: #selector(saveDate)) self.navigationItem.rightBarButtonItem = saveButton self.title = "Pick Birthdate" } @objc func saveDate(){ self.delegate?.dateChanged(date: dtpDate.date) self.navigationController?.popViewController(animated: true) } /* // MARK: - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation override func prepare(for segue: UIStoryboardSegue, sender: Any?) { // Get the new view controller using segue.destination. // Pass the selected object to the new view controller. } */ }
__MACOSX/My Contact List/My Contact List/._DateViewController.swift
My Contact List/My Contact List/Info.plist
CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName $(PRODUCT_NAME) CFBundlePackageType APPL CFBundleShortVersionString 1.0 CFBundleVersion 1 LSRequiresIPhoneOS UILaunchStoryboardName LaunchScreen UIMainStoryboardFile Main UIRequiredDeviceCapabilities armv7 UIStatusBarTintParameters UINavigationBar Style UIBarStyleDefault Translucent UISupportedInterfaceOrientations UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UISupportedInterfaceOrientations~ipad UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight
My Contact List/My Contact List/SettingsViewController.swift
// // SettingsViewController.swift // My Contact List // // Created by Michael Eierman on 8/5/19. // Copyright © 2019 Learning Mobile Apps. All rights reserved. // import UIKit class SettingsViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate { @IBOutlet weak var swAscending: UISwitch! @IBOutlet weak var pckSortField: UIPickerView! let sortOrderItems: Array<String> = ["contactName", "city", "birthday"] override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. pckSortField.dataSource = self; pckSortField.delegate = self; } override func viewWillAppear(_ animated: Bool) { //set the UI based on values in UserDefaults let settings = UserDefaults.standard swAscending.setOn(settings.bool(forKey: Constants.kSortDirectionAscending), animated: true) let sortField = settings.string(forKey: Constants.kSortField) var i = 0 for field in sortOrderItems { if field == sortField { pckSortField.selectRow(i, inComponent: 0, animated: false) } i += 1 } pckSortField.reloadComponent(0) } @IBAction func sortDirectionChanged(_ sender: Any) { let settings = UserDefaults.standard settings.set(swAscending.isOn, forKey: Constants.kSortDirectionAscending) settings.synchronize() } // MARK: UIPickerViewDelegate Methods // Returns the number of 'columns' to display. func numberOfComponents(in pickerView: UIPickerView) -> Int { return 1 } // Returns the # of rows in the picker func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { return sortOrderItems.count } //Sets the value that is shown for each row in the picker func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { return sortOrderItems[row] } //If the user chooses from the pickerview, it calls this function; func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { let sortField = sortOrderItems[row] let settings = UserDefaults.standard settings.set(sortField, forKey: Constants.kSortField) settings.synchronize() } /* // MARK: - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation override func prepare(for segue: UIStoryboardSegue, sender: Any?) { // Get the new view controller using segue.destination. // Pass the selected object to the new view controller. } */ }
__MACOSX/My Contact List/My Contact List/._SettingsViewController.swift
My Contact List/My Contact List.xcodeproj/project.pbxproj
// !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 50; objects = { /* Begin PBXBuildFile section */ 1E31C16722F9CDBE0072F69E /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E31C16622F9CDBE0072F69E /* Constants.swift */; }; 1E31C18B22F9D0580072F69E /* MyContactListModel.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 1E31C18922F9D0580072F69E /* MyContactListModel.xcdatamodeld */; }; 1E31C18D22F9DC4C0072F69E /* DateViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E31C18C22F9DC4C0072F69E /* DateViewController.swift */; }; 1E31C18F22F9E52B0072F69E /* ContactsTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E31C18E22F9E52B0072F69E /* ContactsTableViewController.swift */; }; 1E34AC7B22F4A36C00342F01 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E34AC7A22F4A36C00342F01 /* AppDelegate.swift */; }; 1E34AC8222F4A36C00342F01 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1E34AC8022F4A36C00342F01 /* Main.storyboard */; }; 1E34AC8422F4A36E00342F01 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1E34AC8322F4A36E00342F01 /* Assets.xcassets */; }; 1E34AC8722F4A36E00342F01 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1E34AC8522F4A36E00342F01 /* LaunchScreen.storyboard */; }; 1E34AC8F22F8851A00342F01 /* ContactsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E34AC8E22F8851A00342F01 /* ContactsViewController.swift */; }; 1E34AC9122F8852700342F01 /* SettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E34AC9022F8852700342F01 /* SettingsViewController.swift */; }; 1E34AC9322F8853600342F01 /* MapViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E34AC9222F8853600342F01 /* MapViewController.swift */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ 1E31C16622F9CDBE0072F69E /* Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = "<group>"; }; 1E31C18A22F9D0580072F69E /* MyContactListModel.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = MyContactListModel.xcdatamodel; sourceTree = "<group>"; }; 1E31C18C22F9DC4C0072F69E /* DateViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DateViewController.swift; sourceTree = "<group>"; }; 1E31C18E22F9E52B0072F69E /* ContactsTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContactsTableViewController.swift; sourceTree = "<group>"; }; 1E34AC7722F4A36C00342F01 /* My Contact List.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "My Contact List.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 1E34AC7A22F4A36C00342F01 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; }; 1E34AC8122F4A36C00342F01 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; }; 1E34AC8322F4A36E00342F01 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; 1E34AC8622F4A36E00342F01 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; }; 1E34AC8822F4A36E00342F01 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; 1E34AC8E22F8851A00342F01 /* ContactsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContactsViewController.swift; sourceTree = "<group>"; }; 1E34AC9022F8852700342F01 /* SettingsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsViewController.swift; sourceTree = "<group>"; }; 1E34AC9222F8853600342F01 /* MapViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapViewController.swift; sourceTree = "<group>"; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ 1E34AC7422F4A36C00342F01 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ 1E34AC6E22F4A36C00342F01 = { isa = PBXGroup; children = ( 1E34AC7922F4A36C00342F01 /* My Contact List */, 1E34AC7822F4A36C00342F01 /* Products */, ); sourceTree = "<group>"; }; 1E34AC7822F4A36C00342F01 /* Products */ = { isa = PBXGroup; children = ( 1E34AC7722F4A36C00342F01 /* My Contact List.app */, ); name = Products; sourceTree = "<group>"; }; 1E34AC7922F4A36C00342F01 /* My Contact List */ = { isa = PBXGroup; children = ( 1E34AC7A22F4A36C00342F01 /* AppDelegate.swift */, 1E34AC8022F4A36C00342F01 /* Main.storyboard */, 1E34AC8322F4A36E00342F01 /* Assets.xcassets */, 1E34AC8522F4A36E00342F01 /* LaunchScreen.storyboard */, 1E34AC8822F4A36E00342F01 /* Info.plist */, 1E34AC8E22F8851A00342F01 /* ContactsViewController.swift */, 1E34AC9022F8852700342F01 /* SettingsViewController.swift */, 1E34AC9222F8853600342F01 /* MapViewController.swift */, 1E31C16622F9CDBE0072F69E /* Constants.swift */, 1E31C18922F9D0580072F69E /* MyContactListModel.xcdatamodeld */, 1E31C18C22F9DC4C0072F69E /* DateViewController.swift */, 1E31C18E22F9E52B0072F69E /* ContactsTableViewController.swift */, ); path = "My Contact List"; sourceTree = "<group>"; }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ 1E34AC7622F4A36C00342F01 /* My Contact List */ = { isa = PBXNativeTarget; buildConfigurationList = 1E34AC8B22F4A36E00342F01 /* Build configuration list for PBXNativeTarget "My Contact List" */; buildPhases = ( 1E34AC7322F4A36C00342F01 /* Sources */, 1E34AC7422F4A36C00342F01 /* Frameworks */, 1E34AC7522F4A36C00342F01 /* Resources */, ); buildRules = ( ); dependencies = ( ); name = "My Contact List"; productName = "My Contact List"; productReference = 1E34AC7722F4A36C00342F01 /* My Contact List.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ 1E34AC6F22F4A36C00342F01 /* Project object */ = { isa = PBXProject; attributes = { LastSwiftUpdateCheck = 1030; LastUpgradeCheck = 1030; ORGANIZATIONNAME = "Learning Mobile Apps"; TargetAttributes = { 1E34AC7622F4A36C00342F01 = { CreatedOnToolsVersion = 10.3; }; }; }; buildConfigurationList = 1E34AC7222F4A36C00342F01 /* Build configuration list for PBXProject "My Contact List" */; compatibilityVersion = "Xcode 9.3"; developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, Base, ); mainGroup = 1E34AC6E22F4A36C00342F01; productRefGroup = 1E34AC7822F4A36C00342F01 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( 1E34AC7622F4A36C00342F01 /* My Contact List */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ 1E34AC7522F4A36C00342F01 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 1E34AC8722F4A36E00342F01 /* LaunchScreen.storyboard in Resources */, 1E34AC8422F4A36E00342F01 /* Assets.xcassets in Resources */, 1E34AC8222F4A36C00342F01 /* Main.storyboard in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ 1E34AC7322F4A36C00342F01 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 1E31C16722F9CDBE0072F69E /* Constants.swift in Sources */, 1E34AC9322F8853600342F01 /* MapViewController.swift in Sources */, 1E31C18D22F9DC4C0072F69E /* DateViewController.swift in Sources */, 1E31C18B22F9D0580072F69E /* MyContactListModel.xcdatamodeld in Sources */, 1E34AC8F22F8851A00342F01 /* ContactsViewController.swift in Sources */, 1E34AC7B22F4A36C00342F01 /* AppDelegate.swift in Sources */, 1E31C18F22F9E52B0072F69E /* ContactsTableViewController.swift in Sources */, 1E34AC9122F8852700342F01 /* SettingsViewController.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXVariantGroup section */ 1E34AC8022F4A36C00342F01 /* Main.storyboard */ = { isa = PBXVariantGroup; children = ( 1E34AC8122F4A36C00342F01 /* Base */, ); name = Main.storyboard; sourceTree = "<group>"; }; 1E34AC8522F4A36E00342F01 /* LaunchScreen.storyboard */ = { isa = PBXVariantGroup; children = ( 1E34AC8622F4A36E00342F01 /* Base */, ); name = LaunchScreen.storyboard; sourceTree = "<group>"; }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ 1E34AC8922F4A36E00342F01 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", "$(inherited)", ); GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 12.4; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; }; name = Debug; }; 1E34AC8A22F4A36E00342F01 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 12.4; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; SDKROOT = iphoneos; SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OPTIMIZATION_LEVEL = "-O"; VALIDATE_PRODUCT = YES; }; name = Release; }; 1E34AC8C22F4A36E00342F01 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_STYLE = Automatic; INFOPLIST_FILE = "My Contact List/Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); PRODUCT_BUNDLE_IDENTIFIER = "com.company.lma.My-Contact-List"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; 1E34AC8D22F4A36E00342F01 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_STYLE = Automatic; INFOPLIST_FILE = "My Contact List/Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); PRODUCT_BUNDLE_IDENTIFIER = "com.company.lma.My-Contact-List"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ 1E34AC7222F4A36C00342F01 /* Build configuration list for PBXProject "My Contact List" */ = { isa = XCConfigurationList; buildConfigurations = ( 1E34AC8922F4A36E00342F01 /* Debug */, 1E34AC8A22F4A36E00342F01 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 1E34AC8B22F4A36E00342F01 /* Build configuration list for PBXNativeTarget "My Contact List" */ = { isa = XCConfigurationList; buildConfigurations = ( 1E34AC8C22F4A36E00342F01 /* Debug */, 1E34AC8D22F4A36E00342F01 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ /* Begin XCVersionGroup section */ 1E31C18922F9D0580072F69E /* MyContactListModel.xcdatamodeld */ = { isa = XCVersionGroup; children = ( 1E31C18A22F9D0580072F69E /* MyContactListModel.xcdatamodel */, ); currentVersion = 1E31C18A22F9D0580072F69E /* MyContactListModel.xcdatamodel */; path = MyContactListModel.xcdatamodeld; sourceTree = "<group>"; versionGroupType = wrapper.xcdatamodel; }; /* End XCVersionGroup section */ }; rootObject = 1E34AC6F22F4A36C00342F01 /* Project object */; }
My Contact List/My Contact List.xcodeproj/xcuserdata/eierman.xcuserdatad/xcschemes/xcschememanagement.plist
SchemeUserState My Contact List.xcscheme_^#shared#^_ orderHint 0
My Contact List/My Contact List.xcodeproj/project.xcworkspace/contents.xcworkspacedata
My Contact List/My Contact List.xcodeproj/project.xcworkspace/xcuserdata/eierman.xcuserdatad/.dat.nosync01d8.b0Tmr0
My Contact List/My Contact List.xcodeproj/project.xcworkspace/xcuserdata/eierman.xcuserdatad/UserInterfaceState.xcuserstate
My Contact List/My Contact List.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
IDEDidComputeMac32BitWarning
__MACOSX/My Contact List/My Contact List.xcodeproj/._project.xcworkspace
__MACOSX/My Contact List/._My Contact List.xcodeproj
My Contact List/.git/config
[core] bare = false repositoryformatversion = 0 filemode = true ignorecase = true precomposeunicode = true logallrefupdates = true
My Contact List/.git/objects/51/a3522d1a8251d3583edae3501e30270623b4e9
My Contact List/.git/objects/51/a3522d1a8251d3583edae3501e30270623b4e9
blob 725�// // ContactsViewController.swift // My Contact List // // Created by Michael Eierman on 8/5/19. // Copyright © 2019 Learning Mobile Apps. All rights reserved. // import UIKit class ContactsViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. } /* // MARK: - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation override func prepare(for segue: UIStoryboardSegue, sender: Any?) { // Get the new view controller using segue.destination. // Pass the selected object to the new view controller. } */ }
My Contact List/.git/objects/93/d02855d732ed54e9a873ea163c5b0931fd3b28
My Contact List/.git/objects/93/d02855d732ed54e9a873ea163c5b0931fd3b28
blob 302�<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="14492.1" systemVersion="18G87" minimumToolsVersion="Automatic" sourceLanguage="Swift" userDefinedModelVersionIdentifier=""> <elements/> </model>
My Contact List/.git/objects/94/12200eae4ad930a3bda72bb3665ad9b123436f
My Contact List/.git/objects/94/12200eae4ad930a3bda72bb3665ad9b123436f
blob 316�{ "images" : [ { "idiom" : "universal", "scale" : "1x" }, { "idiom" : "universal", "filename" : "[email protected]", "scale" : "2x" }, { "idiom" : "universal", "scale" : "3x" } ], "info" : { "version" : 1, "author" : "xcode" } }
My Contact List/.git/objects/b2/85dfbdc51b879e840fc0555565f2e481d6c8fe
My Contact List/.git/objects/b2/85dfbdc51b879e840fc0555565f2e481d6c8fe
blob 715�// // MapViewController.swift // My Contact List // // Created by Michael Eierman on 8/5/19. // Copyright © 2019 Learning Mobile Apps. All rights reserved. // import UIKit class MapViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. } /* // MARK: - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation override func prepare(for segue: UIStoryboardSegue, sender: Any?) { // Get the new view controller using segue.destination. // Pass the selected object to the new view controller. } */ }
My Contact List/.git/objects/da/4a164c918651cdd1e11dca5cc62c333f097601
My Contact List/.git/objects/da/4a164c918651cdd1e11dca5cc62c333f097601
blob 62�{ "info" : { "version" : 1, "author" : "xcode" } }
My Contact List/.git/objects/d1/6f0eca20c54005e834e7339cc4838a2c904c46
My Contact List/.git/objects/d1/6f0eca20c54005e834e7339cc4838a2c904c46
blob 725�// // SettingsViewController.swift // My Contact List // // Created by Michael Eierman on 8/5/19. // Copyright © 2019 Learning Mobile Apps. All rights reserved. // import UIKit class SettingsViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. } /* // MARK: - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation override func prepare(for segue: UIStoryboardSegue, sender: Any?) { // Get the new view controller using segue.destination. // Pass the selected object to the new view controller. } */ }
My Contact List/.git/objects/c0/aa5890be1fe9b6fcc02f93173455ecf442e757
My Contact List/.git/objects/c0/aa5890be1fe9b6fcc02f93173455ecf442e757
blob 175�// // Constants.swift // My Contact List // // Created by Michael Eierman on 8/6/19. // Copyright © 2019 Learning Mobile Apps. All rights reserved. // import Foundation
My Contact List/.git/objects/11/12069926cb82235d70c5ca1be944c6f427b2d8
My Contact List/.git/objects/11/12069926cb82235d70c5ca1be944c6f427b2d8
blob 253�{ "images" : [ { "idiom" : "universal", "filename" : "[email protected]", "scale" : "2x" }, { "idiom" : "universal", "scale" : "3x" } ], "info" : { "version" : 1, "author" : "xcode" } }
My Contact List/.git/objects/74/bb798c463179d207542c2c0554f5aecf6962d1
My Contact List/.git/objects/74/bb798c463179d207542c2c0554f5aecf6962d1
blob 717�// // DateViewController.swift // My Contact List // // Created by Michael Eierman on 8/6/19. // Copyright © 2019 Learning Mobile Apps. All rights reserved. // import UIKit class DateViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. } /* // MARK: - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation override func prepare(for segue: UIStoryboardSegue, sender: Any?) { // Get the new view controller using segue.destination. // Pass the selected object to the new view controller. } */ }
My Contact List/.git/objects/44/7805c2535443ad8c4487730db74c1667ee6341
My Contact List/.git/objects/44/7805c2535443ad8c4487730db74c1667ee6341
blob 2990�// // ContactsTableViewController.swift // My Contact List // // Created by Michael Eierman on 8/6/19. // Copyright © 2019 Learning Mobile Apps. All rights reserved. // import UIKit class ContactsTableViewController: UITableViewController { override func viewDidLoad() { super.viewDidLoad() // Uncomment the following line to preserve selection between presentations // self.clearsSelectionOnViewWillAppear = false // Uncomment the following line to display an Edit button in the navigation bar for this view controller. // self.navigationItem.rightBarButtonItem = self.editButtonItem } // MARK: - Table view data source override func numberOfSections(in tableView: UITableView) -> Int { // #warning Incomplete implementation, return the number of sections return 0 } override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { // #warning Incomplete implementation, return the number of rows return 0 } /* override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "reuseIdentifier", for: indexPath) // Configure the cell... return cell } */ /* // Override to support conditional editing of the table view. override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool { // Return false if you do not want the specified item to be editable. return true } */ /* // Override to support editing the table view. override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) { if editingStyle == .delete { // Delete the row from the data source tableView.deleteRows(at: [indexPath], with: .fade) } else if editingStyle == .insert { // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view } } */ /* // Override to support rearranging the table view. override func tableView(_ tableView: UITableView, moveRowAt fromIndexPath: IndexPath, to: IndexPath) { } */ /* // Override to support conditional rearranging of the table view. override func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool { // Return false if you do not want the item to be re-orderable. return true } */ /* // MARK: - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation override func prepare(for segue: UIStoryboardSegue, sender: Any?) { // Get the new view controller using segue.destination. // Pass the selected object to the new view controller. } */ }
My Contact List/.git/objects/f9/2f7cb6f4a02aaeb2534504bea9569b4983af2a
My Contact List/.git/objects/f9/2f7cb6f4a02aaeb2534504bea9569b4983af2a
blob 315�{ "images" : [ { "idiom" : "universal", "scale" : "1x" }, { "idiom" : "universal", "filename" : "[email protected]", "scale" : "2x" }, { "idiom" : "universal", "scale" : "3x" } ], "info" : { "version" : 1, "author" : "xcode" } }
My Contact List/.git/objects/48/c3d8a19a1cfa5de320310c63de76f8c81a7c34
My Contact List/.git/objects/48/c3d8a19a1cfa5de320310c63de76f8c81a7c34
My Contact List/.git/objects/1e/0d01adc6f978d6275e73583222c77d493d5b77
My Contact List/.git/objects/1e/0d01adc6f978d6275e73583222c77d493d5b77
My Contact List/.git/objects/78/1aca185052a2d2bf29c3616dd99368c4b7e088
My Contact List/.git/objects/78/1aca185052a2d2bf29c3616dd99368c4b7e088
blob 359�{ "images" : [ { "idiom" : "universal", "filename" : "sample-401-globe.png", "scale" : "1x" }, { "idiom" : "universal", "filename" : "[email protected]", "scale" : "2x" }, { "idiom" : "universal", "scale" : "3x" } ], "info" : { "version" : 1, "author" : "xcode" } }
My Contact List/.git/objects/7f/5e4906c3aee1b2c91fa1f684694edb8d21cc4b
My Contact List/.git/objects/7f/5e4906c3aee1b2c91fa1f684694edb8d21cc4b
My Contact List/.git/HEAD
ref: refs/heads/master
My Contact List/.git/info/exclude
.DS_Store UserInterfaceState.xcuserstate
__MACOSX/My Contact List/.git/info/._exclude
My Contact List/.git/description
Unnamed repository; edit this file 'description' to name the repository.
My Contact List/.git/hooks/README.sample
#!/bin/sh # # Place appropriately named executable hook scripts into this directory # to intercept various actions that git takes. See `git help hooks` for # more information.