Xcode Project 1: Single View Application // Swift // Xcode 8.3 // Custom Classes // ViewControllers

Coding Exercise: 8 Apple Programming Language The following minimum requirements must be adhered to for each assignment:

1. Your name and term in a comment at the top of your playground/code file 2. The assignment must be at least 50% complete Requirements % Excellent (100%) Good (75%) Fair (30%) Poor (0%) Custom Class - Stored Properties 10 There are at least 3 stored properties in the custom class, and 3 different types are being used for those properties. There are at least 3 stored properties in the custom class, but 3 different types are not being used for those properties. Only 2 stored properties are used. Less than 2 stored properties are used. Custom Class - Computed Properties 10 There are at least 2 computed properties in the custom class, and these computed properties provide added value to the class. There are at least 2 computed properties in the custom class, but one or both of these properties has questionable value for the class. There is only 1 computed property in the class. There are no computed properties in the class. Custom Class - Methods 10 There are at least 2 instance methods in the custom class, and these instance methods provide added value to the class. There are at least 2 instance methods in the custom class, but one or both of these methods has questionable value for the class. There is only 1 instance method in the class. There are no instance methods in the class. Custom Class - Initializers 10 Both the default and the custom initializer exists in the class. The custom initializer exists in the class. The default initializer exists in the class. Neither initializer exists. Custom Class - General 5 The Custom Class is in its own .swift file rather than embedded inside a ViewController. The Custom Class is embedded within one of the ViewControllers or another file. First ViewController 15 There are at UI labels for each of the Stored and Computed properties, a button for each instance method, and a button to Edit the class properties. The button for each instance method works and performs the appropriate functionality. The Edit button performs a segue to the second view controller. The view controller properly updates with information received from the second view controller after the class properties are edited. One of the following requirements is missed:

There are at UI labels for each of the Stored and Computed properties, a button for each instance method, and a button to Edit the class properties. The button for each instance method works and performs the appropriate functionality. The Edit button performs a segue to the second view controller. The view controller properly updates with information received from the second view controller after the class properties are edited. Two of the following requirements is missed:

There are at UI labels for each of the Stored and Computed properties, a button for each instance method, and a button to Edit the class properties. The button for each instance method works and performs the appropriate functionality. The Edit button performs a segue to the second view controller. The view controller properly updates with information received from the second view controller after the class properties are edited. More than two of the following requirements is missed: There are at UI labels for each of the Stored and Computed properties, a button for each instance method, and a button to Edit the class properties. The button for each instance method works and performs the appropriate functionality. The Edit button performs a segue to the second view controller. The view controller properly updates with information received from the second view controller after the class properties are edited. Second ViewController 20 There are input fields for each stored property in the second ViewController. Each field utilizes an appropriate input method and each property can be modified. The fields, by default, are populated with the data passed from the first view controller. There are buttons for Save and Back. Both Save and Back return the user to the previous ViewController.

Appropriate error messaging/alerts appear when Save is clicked but data is incomplete/invalid. One of the following requirements is missed:

There are input fields for each stored property in the second ViewController. Each field utilizes an appropriate input method and each property can be modified. The fields, by default, are populated with the data passed from the first view controller. There are buttons for Save and Back. Both Save and Back return the user to the previous ViewController.

Appropriate error messaging/alerts appear when Save is clicked but data is incomplete/invalid. Two of the following requirements is missed:

There are input fields for each stored property in the second ViewController. Each field utilizes an appropriate input method and each property can be modified. The fields, by default, are populated with the data passed from the first view controller. There are buttons for Save and Back. Both Save and Back return the user to the previous ViewController.

Appropriate error messaging/alerts appear when Save is clicked but data is incomplete/invalid. More than two of the following requirements is missed: There are input fields for each stored property in the second ViewController. Each field utilizes an appropriate input method and each property can be modified. The fields, by default, are populated with the data passed from the first view controller. There are buttons for Save and Back. Both Save and Back return the user to the previous ViewController.

Appropriate error messaging/alerts appear when Save is clicked but data is incomplete/invalid. Passing Data 10 The class is passed by reference to the second view controller, and the data in the first is modified without explicitly sending that data back to the first. The data is passed to the second view controller by reference, but it is passed back the same. The data is passed either forward or backward using individual properties rather than by reference. The first ViewController does not pass data to the second OR the second ViewController does not pass data to the first. Format / Efficiency 10 Code is well-formatted for readability.

Comments are liberal and clear. Code blocks are efficient and follow Swift best practices and conventions as described in research materials. There are no warnings, errors, or crashes in your code. Code is generally well-formatted and best practices are followed, however the code is more inefficient than it could be. Comments are sparse or inaccurate. Code format needs some improvement (for example: inconsistent spacing and indentation) OR best practices aren't being followed for things like loops, conditionals, optional binding, and other Swift constructs.

OR Only the most basic comments exist, and most of these are in section headers to separate the various exercises OR Code has moderately poor syntax or efficiency problems OR there is 1 unique warning in your project/code file. Your code crashes under normal use coniditons OR there are 2 or more unique warnings in your code OR there is 1 unique code warning along with one of the other conditions that would lead to a FAIR rating. Total: 100