From 8e7c26bfd99e95ef2e5653644c2296c7b834e144 Mon Sep 17 00:00:00 2001 From: Ariel McLaughlin Date: Thu, 11 Oct 2018 21:02:11 -0600 Subject: [PATCH] first commit --- .DS_Store | Bin 0 -> 6148 bytes .../JSONEncoding.xcodeproj/project.pbxproj | 599 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../UserInterfaceState.xcuserstate | Bin 0 -> 29254 bytes .../xcschemes/xcschememanagement.plist | 14 + JSONEncoding/JSONEncoding/AppDelegate.swift | 46 ++ .../AppIcon.appiconset/Contents.json | 98 +++ .../Assets.xcassets/Contents.json | 6 + .../Base.lproj/LaunchScreen.storyboard | 25 + .../JSONEncoding/Base.lproj/Main.storyboard | 127 ++++ JSONEncoding/JSONEncoding/Info.plist | 45 ++ JSONEncoding/JSONEncoding/Student.swift | 22 + .../JSONEncoding/StudentManager.swift | 37 ++ .../JSONEncoding/ViewController.swift | 38 ++ JSONEncoding/JSONEncodingTests/Info.plist | 22 + .../JSONEncodingTests/JSONEncodingTests.swift | 34 + JSONEncoding/JSONEncodingUITests/Info.plist | 22 + .../JSONEncodingUITests.swift | 34 + 19 files changed, 1184 insertions(+) create mode 100644 .DS_Store create mode 100644 JSONEncoding/JSONEncoding.xcodeproj/project.pbxproj create mode 100644 JSONEncoding/JSONEncoding.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 JSONEncoding/JSONEncoding.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 JSONEncoding/JSONEncoding.xcodeproj/project.xcworkspace/xcuserdata/arielm.mclaughlin.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 JSONEncoding/JSONEncoding.xcodeproj/xcuserdata/arielm.mclaughlin.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 JSONEncoding/JSONEncoding/AppDelegate.swift create mode 100644 JSONEncoding/JSONEncoding/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 JSONEncoding/JSONEncoding/Assets.xcassets/Contents.json create mode 100644 JSONEncoding/JSONEncoding/Base.lproj/LaunchScreen.storyboard create mode 100644 JSONEncoding/JSONEncoding/Base.lproj/Main.storyboard create mode 100644 JSONEncoding/JSONEncoding/Info.plist create mode 100644 JSONEncoding/JSONEncoding/Student.swift create mode 100644 JSONEncoding/JSONEncoding/StudentManager.swift create mode 100644 JSONEncoding/JSONEncoding/ViewController.swift create mode 100644 JSONEncoding/JSONEncodingTests/Info.plist create mode 100644 JSONEncoding/JSONEncodingTests/JSONEncodingTests.swift create mode 100644 JSONEncoding/JSONEncodingUITests/Info.plist create mode 100644 JSONEncoding/JSONEncodingUITests/JSONEncodingUITests.swift diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..e4938a204049a8c29bae5ef4741a5954ed5113ca GIT binary patch literal 6148 zcmeHK%}&BV5S~TU1vU0yqQ_pmap1?O7n26{pa(Un(SsUjDS;-nYoJIJF?|euBj3Qs z(b*r21i30PGs)~X%+74P-!?l80I+H=C;?aiz)>Y;aya}Ta$f3$WQ=DHk*PHfA%+GB z2q2t@CdVu?AkS_Yj=_afIDzly7enhP5)D5RKE_xdW1_Y)HP7#N?@ZpCe;0+_q*#1s znYrxz!XoE+o?pq|xNXsQ6EEp?t6t|y{yOuLwr}inA)+ta^Dn|?zh&q|>M87I}anM!kxO#%~9M9FP^}(QAEZF7B?yz7Fc6QL-s%#I3IljJG+B>S> zK0FSdhR-kha2S5aN>&Yy;1!Lj`@MHNaU|jv#*Feud4$9OF+dE=A_L~G;!Csma`aBb z05R~V49NSzMwRFoOf{;j0|(UtAZF361Z~+%$Q;|CV=&c-Gbl`_BI;CTS`4Ps(QlhL z$6%^arvo$12QyD*rbA)s>A1eF!hty&X(R@SfpG?8?}uW^`hPgR|5rgY5Cg=(|73t= z58Q()?# + + + + diff --git a/JSONEncoding/JSONEncoding.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/JSONEncoding/JSONEncoding.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/JSONEncoding/JSONEncoding.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/JSONEncoding/JSONEncoding.xcodeproj/project.xcworkspace/xcuserdata/arielm.mclaughlin.xcuserdatad/UserInterfaceState.xcuserstate b/JSONEncoding/JSONEncoding.xcodeproj/project.xcworkspace/xcuserdata/arielm.mclaughlin.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..361d39c306d3a8ffbaa0522d326b4b108e26c10f GIT binary patch literal 29254 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 Wqh_|aeI-fpzXT2x>-tkO_x}MU@Y$&V literal 0 HcmV?d00001 diff --git a/JSONEncoding/JSONEncoding.xcodeproj/xcuserdata/arielm.mclaughlin.xcuserdatad/xcschemes/xcschememanagement.plist b/JSONEncoding/JSONEncoding.xcodeproj/xcuserdata/arielm.mclaughlin.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..e1d37a3 --- /dev/null +++ b/JSONEncoding/JSONEncoding.xcodeproj/xcuserdata/arielm.mclaughlin.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + JSONEncoding.xcscheme + + orderHint + 0 + + + + diff --git a/JSONEncoding/JSONEncoding/AppDelegate.swift b/JSONEncoding/JSONEncoding/AppDelegate.swift new file mode 100644 index 0000000..43bc0e8 --- /dev/null +++ b/JSONEncoding/JSONEncoding/AppDelegate.swift @@ -0,0 +1,46 @@ +// +// AppDelegate.swift +// JSONEncoding +// +// Created by Ariel M. McLaughlin on 10/11/18. +// Copyright © 2018 Ariel M. McLaughlin. All rights reserved. +// + +import UIKit + +@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. + 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:. + } + + +} + diff --git a/JSONEncoding/JSONEncoding/Assets.xcassets/AppIcon.appiconset/Contents.json b/JSONEncoding/JSONEncoding/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..d8db8d6 --- /dev/null +++ b/JSONEncoding/JSONEncoding/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,98 @@ +{ + "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" + } +} \ No newline at end of file diff --git a/JSONEncoding/JSONEncoding/Assets.xcassets/Contents.json b/JSONEncoding/JSONEncoding/Assets.xcassets/Contents.json new file mode 100644 index 0000000..da4a164 --- /dev/null +++ b/JSONEncoding/JSONEncoding/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/JSONEncoding/JSONEncoding/Base.lproj/LaunchScreen.storyboard b/JSONEncoding/JSONEncoding/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..bfa3612 --- /dev/null +++ b/JSONEncoding/JSONEncoding/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/JSONEncoding/JSONEncoding/Base.lproj/Main.storyboard b/JSONEncoding/JSONEncoding/Base.lproj/Main.storyboard new file mode 100644 index 0000000..7418986 --- /dev/null +++ b/JSONEncoding/JSONEncoding/Base.lproj/Main.storyboard @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/JSONEncoding/JSONEncoding/Info.plist b/JSONEncoding/JSONEncoding/Info.plist new file mode 100644 index 0000000..16be3b6 --- /dev/null +++ b/JSONEncoding/JSONEncoding/Info.plist @@ -0,0 +1,45 @@ + + + + + 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 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/JSONEncoding/JSONEncoding/Student.swift b/JSONEncoding/JSONEncoding/Student.swift new file mode 100644 index 0000000..d87dff7 --- /dev/null +++ b/JSONEncoding/JSONEncoding/Student.swift @@ -0,0 +1,22 @@ +import Foundation + +struct Student: CustomStringConvertible, Codable { + var description: String { + // return "\(name), \(age), \(cohort)" + var result = "\(name), Cohort: \(cohort ?? "[Unknown cohort]")" + if var age = age { + if age > 120 { + age = 12 + } + result += ", \(age) years old" + } + return result + } + + let name: String + let age: Int? + let cohort: String? + + + +} diff --git a/JSONEncoding/JSONEncoding/StudentManager.swift b/JSONEncoding/JSONEncoding/StudentManager.swift new file mode 100644 index 0000000..c0e180f --- /dev/null +++ b/JSONEncoding/JSONEncoding/StudentManager.swift @@ -0,0 +1,37 @@ +import Foundation + +class StudentManager: NSObject { + var students: [Student] = [] + + let url = URL(fileURLWithPath: NSHomeDirectory()) + .appendingPathComponent("Documents") + .appendingPathComponent("students.json") + + func writeToFile() { + do { + let studentEncoded = try JSONEncoder().encode(students) + if let string = String(data: studentEncoded, encoding: .utf8) { + print(string) + } + } catch { + print("Error: \(error)") + } + } + + func readFromFile() { + do { + let data = try Data(contentsOf: url) + let studentsDecoded = try JSONDecoder().decode([Student].self, from: data) + students = studentsDecoded + } catch { + print("Error: \(error)") + } + } + + func create(name: String, age: Int?, cohort: String?) { + let student = Student.init(name: name, age: age, cohort: cohort) + students.append(student) + } + } + + diff --git a/JSONEncoding/JSONEncoding/ViewController.swift b/JSONEncoding/JSONEncoding/ViewController.swift new file mode 100644 index 0000000..603458d --- /dev/null +++ b/JSONEncoding/JSONEncoding/ViewController.swift @@ -0,0 +1,38 @@ +import UIKit + +class ViewController: UIViewController { + @IBOutlet weak var nameText: UITextField! + @IBOutlet weak var ageText: UITextField! + @IBOutlet weak var cohortText: UITextField! + + + var studentManager = StudentManager() + + @IBAction func submitButton(_ sender: Any) { + + guard let name = nameText.text else {return} + guard let age = ageText.text else {return} + guard let cohort = cohortText.text else {return} + studentManager.create(name: name, age: Int(age), cohort: cohort) + studentManager.writeToFile() +} + + + @IBAction func printButton(_ sender: Any) { + print(studentManager.students) + } + + + + + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + studentManager.readFromFile() + + + } + + +} + diff --git a/JSONEncoding/JSONEncodingTests/Info.plist b/JSONEncoding/JSONEncodingTests/Info.plist new file mode 100644 index 0000000..6c40a6c --- /dev/null +++ b/JSONEncoding/JSONEncodingTests/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/JSONEncoding/JSONEncodingTests/JSONEncodingTests.swift b/JSONEncoding/JSONEncodingTests/JSONEncodingTests.swift new file mode 100644 index 0000000..6a5c8c1 --- /dev/null +++ b/JSONEncoding/JSONEncodingTests/JSONEncodingTests.swift @@ -0,0 +1,34 @@ +// +// JSONEncodingTests.swift +// JSONEncodingTests +// +// Created by Ariel M. McLaughlin on 10/11/18. +// Copyright © 2018 Ariel M. McLaughlin. All rights reserved. +// + +import XCTest +@testable import JSONEncoding + +class JSONEncodingTests: XCTestCase { + + override func setUp() { + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDown() { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + + func testPerformanceExample() { + // This is an example of a performance test case. + self.measure { + // Put the code you want to measure the time of here. + } + } + +} diff --git a/JSONEncoding/JSONEncodingUITests/Info.plist b/JSONEncoding/JSONEncodingUITests/Info.plist new file mode 100644 index 0000000..6c40a6c --- /dev/null +++ b/JSONEncoding/JSONEncodingUITests/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/JSONEncoding/JSONEncodingUITests/JSONEncodingUITests.swift b/JSONEncoding/JSONEncodingUITests/JSONEncodingUITests.swift new file mode 100644 index 0000000..43cb2c6 --- /dev/null +++ b/JSONEncoding/JSONEncodingUITests/JSONEncodingUITests.swift @@ -0,0 +1,34 @@ +// +// JSONEncodingUITests.swift +// JSONEncodingUITests +// +// Created by Ariel M. McLaughlin on 10/11/18. +// Copyright © 2018 Ariel M. McLaughlin. All rights reserved. +// + +import XCTest + +class JSONEncodingUITests: XCTestCase { + + override func setUp() { + // Put setup code here. This method is called before the invocation of each test method in the class. + + // In UI tests it is usually best to stop immediately when a failure occurs. + continueAfterFailure = false + + // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method. + XCUIApplication().launch() + + // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. + } + + override func tearDown() { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() { + // Use recording to get started writing UI tests. + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + +}