From 0cfb4848f784fb53e924cc432f130bc370570eba Mon Sep 17 00:00:00 2001 From: Moses Robinson Date: Thu, 11 Oct 2018 12:31:54 -0700 Subject: [PATCH 1/5] initial commit and some --- .../JSONStudents.xcodeproj/project.pbxproj | 349 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../UserInterfaceState.xcuserstate | Bin 0 -> 12714 bytes .../xcschemes/xcschememanagement.plist | 14 + JSONStudents/JSONStudents/AppDelegate.swift | 46 +++ .../AppIcon.appiconset/Contents.json | 98 +++++ .../Assets.xcassets/Contents.json | 6 + .../Base.lproj/LaunchScreen.storyboard | 25 ++ .../JSONStudents/Base.lproj/Main.storyboard | 24 ++ JSONStudents/JSONStudents/Info.plist | 45 +++ JSONStudents/JSONStudents/Student.swift | 12 + .../JSONStudents/StudentManager.swift | 16 + .../JSONStudents/ViewController.swift | 20 + 14 files changed, 670 insertions(+) create mode 100644 JSONStudents/JSONStudents.xcodeproj/project.pbxproj create mode 100644 JSONStudents/JSONStudents.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 JSONStudents/JSONStudents.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 JSONStudents/JSONStudents.xcodeproj/project.xcworkspace/xcuserdata/mosesrobinson.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 JSONStudents/JSONStudents.xcodeproj/xcuserdata/mosesrobinson.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 JSONStudents/JSONStudents/AppDelegate.swift create mode 100644 JSONStudents/JSONStudents/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 JSONStudents/JSONStudents/Assets.xcassets/Contents.json create mode 100644 JSONStudents/JSONStudents/Base.lproj/LaunchScreen.storyboard create mode 100644 JSONStudents/JSONStudents/Base.lproj/Main.storyboard create mode 100644 JSONStudents/JSONStudents/Info.plist create mode 100644 JSONStudents/JSONStudents/Student.swift create mode 100644 JSONStudents/JSONStudents/StudentManager.swift create mode 100644 JSONStudents/JSONStudents/ViewController.swift diff --git a/JSONStudents/JSONStudents.xcodeproj/project.pbxproj b/JSONStudents/JSONStudents.xcodeproj/project.pbxproj new file mode 100644 index 0000000..26f8348 --- /dev/null +++ b/JSONStudents/JSONStudents.xcodeproj/project.pbxproj @@ -0,0 +1,349 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 39F4BEBA216FDB3B00063FE9 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39F4BEB9216FDB3B00063FE9 /* AppDelegate.swift */; }; + 39F4BEBC216FDB3B00063FE9 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39F4BEBB216FDB3B00063FE9 /* ViewController.swift */; }; + 39F4BEBF216FDB3B00063FE9 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 39F4BEBD216FDB3B00063FE9 /* Main.storyboard */; }; + 39F4BEC1216FDB3D00063FE9 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 39F4BEC0216FDB3C00063FE9 /* Assets.xcassets */; }; + 39F4BEC4216FDB3D00063FE9 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 39F4BEC2216FDB3D00063FE9 /* LaunchScreen.storyboard */; }; + 39F4BECC216FDB6E00063FE9 /* Student.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39F4BECB216FDB6E00063FE9 /* Student.swift */; }; + 39F4BECE216FDBE700063FE9 /* StudentManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39F4BECD216FDBE700063FE9 /* StudentManager.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 39F4BEB6216FDB3B00063FE9 /* JSONStudents.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = JSONStudents.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 39F4BEB9216FDB3B00063FE9 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 39F4BEBB216FDB3B00063FE9 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + 39F4BEBE216FDB3B00063FE9 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 39F4BEC0216FDB3C00063FE9 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 39F4BEC3216FDB3D00063FE9 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 39F4BEC5216FDB3D00063FE9 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 39F4BECB216FDB6E00063FE9 /* Student.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Student.swift; sourceTree = ""; }; + 39F4BECD216FDBE700063FE9 /* StudentManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StudentManager.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 39F4BEB3216FDB3B00063FE9 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 39F4BEAD216FDB3B00063FE9 = { + isa = PBXGroup; + children = ( + 39F4BEB8216FDB3B00063FE9 /* JSONStudents */, + 39F4BEB7216FDB3B00063FE9 /* Products */, + ); + sourceTree = ""; + }; + 39F4BEB7216FDB3B00063FE9 /* Products */ = { + isa = PBXGroup; + children = ( + 39F4BEB6216FDB3B00063FE9 /* JSONStudents.app */, + ); + name = Products; + sourceTree = ""; + }; + 39F4BEB8216FDB3B00063FE9 /* JSONStudents */ = { + isa = PBXGroup; + children = ( + 39F4BEB9216FDB3B00063FE9 /* AppDelegate.swift */, + 39F4BEBB216FDB3B00063FE9 /* ViewController.swift */, + 39F4BEBD216FDB3B00063FE9 /* Main.storyboard */, + 39F4BECB216FDB6E00063FE9 /* Student.swift */, + 39F4BECD216FDBE700063FE9 /* StudentManager.swift */, + 39F4BEC0216FDB3C00063FE9 /* Assets.xcassets */, + 39F4BEC2216FDB3D00063FE9 /* LaunchScreen.storyboard */, + 39F4BEC5216FDB3D00063FE9 /* Info.plist */, + ); + path = JSONStudents; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 39F4BEB5216FDB3B00063FE9 /* JSONStudents */ = { + isa = PBXNativeTarget; + buildConfigurationList = 39F4BEC8216FDB3D00063FE9 /* Build configuration list for PBXNativeTarget "JSONStudents" */; + buildPhases = ( + 39F4BEB2216FDB3B00063FE9 /* Sources */, + 39F4BEB3216FDB3B00063FE9 /* Frameworks */, + 39F4BEB4216FDB3B00063FE9 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = JSONStudents; + productName = JSONStudents; + productReference = 39F4BEB6216FDB3B00063FE9 /* JSONStudents.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 39F4BEAE216FDB3B00063FE9 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1000; + LastUpgradeCheck = 1000; + ORGANIZATIONNAME = "Moses Robinson"; + TargetAttributes = { + 39F4BEB5216FDB3B00063FE9 = { + CreatedOnToolsVersion = 10.0; + }; + }; + }; + buildConfigurationList = 39F4BEB1216FDB3B00063FE9 /* Build configuration list for PBXProject "JSONStudents" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 39F4BEAD216FDB3B00063FE9; + productRefGroup = 39F4BEB7216FDB3B00063FE9 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 39F4BEB5216FDB3B00063FE9 /* JSONStudents */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 39F4BEB4216FDB3B00063FE9 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 39F4BEC4216FDB3D00063FE9 /* LaunchScreen.storyboard in Resources */, + 39F4BEC1216FDB3D00063FE9 /* Assets.xcassets in Resources */, + 39F4BEBF216FDB3B00063FE9 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 39F4BEB2216FDB3B00063FE9 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 39F4BEBC216FDB3B00063FE9 /* ViewController.swift in Sources */, + 39F4BECE216FDBE700063FE9 /* StudentManager.swift in Sources */, + 39F4BECC216FDB6E00063FE9 /* Student.swift in Sources */, + 39F4BEBA216FDB3B00063FE9 /* AppDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 39F4BEBD216FDB3B00063FE9 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 39F4BEBE216FDB3B00063FE9 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 39F4BEC2216FDB3D00063FE9 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 39F4BEC3216FDB3D00063FE9 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 39F4BEC6216FDB3D00063FE9 /* 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.0; + 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; + }; + 39F4BEC7216FDB3D00063FE9 /* 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.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 39F4BEC9216FDB3D00063FE9 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = 5ZRKC88876; + INFOPLIST_FILE = JSONStudents/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.mosesrobinson.JSONStudents; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 39F4BECA216FDB3D00063FE9 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = 5ZRKC88876; + INFOPLIST_FILE = JSONStudents/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.mosesrobinson.JSONStudents; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 39F4BEB1216FDB3B00063FE9 /* Build configuration list for PBXProject "JSONStudents" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 39F4BEC6216FDB3D00063FE9 /* Debug */, + 39F4BEC7216FDB3D00063FE9 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 39F4BEC8216FDB3D00063FE9 /* Build configuration list for PBXNativeTarget "JSONStudents" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 39F4BEC9216FDB3D00063FE9 /* Debug */, + 39F4BECA216FDB3D00063FE9 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 39F4BEAE216FDB3B00063FE9 /* Project object */; +} diff --git a/JSONStudents/JSONStudents.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/JSONStudents/JSONStudents.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..8e5e72d --- /dev/null +++ b/JSONStudents/JSONStudents.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/JSONStudents/JSONStudents.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/JSONStudents/JSONStudents.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/JSONStudents/JSONStudents.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/JSONStudents/JSONStudents.xcodeproj/project.xcworkspace/xcuserdata/mosesrobinson.xcuserdatad/UserInterfaceState.xcuserstate b/JSONStudents/JSONStudents.xcodeproj/project.xcworkspace/xcuserdata/mosesrobinson.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..2b7e1dbe5c65122dc03734d341961a2173f5353c GIT binary patch literal 12714 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 + + + + SchemeUserState + + JSONStudents.xcscheme + + orderHint + 0 + + + + diff --git a/JSONStudents/JSONStudents/AppDelegate.swift b/JSONStudents/JSONStudents/AppDelegate.swift new file mode 100644 index 0000000..7d7b52a --- /dev/null +++ b/JSONStudents/JSONStudents/AppDelegate.swift @@ -0,0 +1,46 @@ +// +// AppDelegate.swift +// JSONStudents +// +// Created by Moses Robinson on 10/11/18. +// Copyright © 2018 Moses Robinson. 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/JSONStudents/JSONStudents/Assets.xcassets/AppIcon.appiconset/Contents.json b/JSONStudents/JSONStudents/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..d8db8d6 --- /dev/null +++ b/JSONStudents/JSONStudents/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/JSONStudents/JSONStudents/Assets.xcassets/Contents.json b/JSONStudents/JSONStudents/Assets.xcassets/Contents.json new file mode 100644 index 0000000..da4a164 --- /dev/null +++ b/JSONStudents/JSONStudents/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/JSONStudents/JSONStudents/Base.lproj/LaunchScreen.storyboard b/JSONStudents/JSONStudents/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..bfa3612 --- /dev/null +++ b/JSONStudents/JSONStudents/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/JSONStudents/JSONStudents/Base.lproj/Main.storyboard b/JSONStudents/JSONStudents/Base.lproj/Main.storyboard new file mode 100644 index 0000000..f1bcf38 --- /dev/null +++ b/JSONStudents/JSONStudents/Base.lproj/Main.storyboard @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/JSONStudents/JSONStudents/Info.plist b/JSONStudents/JSONStudents/Info.plist new file mode 100644 index 0000000..16be3b6 --- /dev/null +++ b/JSONStudents/JSONStudents/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/JSONStudents/JSONStudents/Student.swift b/JSONStudents/JSONStudents/Student.swift new file mode 100644 index 0000000..766890e --- /dev/null +++ b/JSONStudents/JSONStudents/Student.swift @@ -0,0 +1,12 @@ +import UIKit + +struct Student: CustomStringConvertible, Codable { + var description: String { + // some code + } + + let name: String + let age: Int? + let cohort: String? +} + diff --git a/JSONStudents/JSONStudents/StudentManager.swift b/JSONStudents/JSONStudents/StudentManager.swift new file mode 100644 index 0000000..7c4dff4 --- /dev/null +++ b/JSONStudents/JSONStudents/StudentManager.swift @@ -0,0 +1,16 @@ +import UIKit + +class StudentManager: NSObject { + var students: [Student] = [] + + let url = URL(fileURLWithPath: NSHomeDirectory()) + .appendingPathComponent("Documents") + .appendingPathComponent("students.json") + + func writeToFile() { + } + + func readFromFile() { + } + +} diff --git a/JSONStudents/JSONStudents/ViewController.swift b/JSONStudents/JSONStudents/ViewController.swift new file mode 100644 index 0000000..340ebd7 --- /dev/null +++ b/JSONStudents/JSONStudents/ViewController.swift @@ -0,0 +1,20 @@ +// +// ViewController.swift +// JSONStudents +// +// Created by Moses Robinson on 10/11/18. +// Copyright © 2018 Moses Robinson. All rights reserved. +// + +import UIKit + +class ViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + // Do any additional setup after loading the view, typically from a nib. + } + + +} + From 90aa120dd0eb3514d3e69459910267309ee2f5e1 Mon Sep 17 00:00:00 2001 From: Moses Robinson Date: Thu, 11 Oct 2018 12:48:34 -0700 Subject: [PATCH 2/5] set up complete, needs encoding and decoding code --- .../UserInterfaceState.xcuserstate | Bin 12714 -> 12714 bytes JSONStudents/JSONStudents/Student.swift | 5 ++++- .../JSONStudents/StudentManager.swift | 7 ++++++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/JSONStudents/JSONStudents.xcodeproj/project.xcworkspace/xcuserdata/mosesrobinson.xcuserdatad/UserInterfaceState.xcuserstate b/JSONStudents/JSONStudents.xcodeproj/project.xcworkspace/xcuserdata/mosesrobinson.xcuserdatad/UserInterfaceState.xcuserstate index 2b7e1dbe5c65122dc03734d341961a2173f5353c..888402f19fee035330fbff00ef76c10ef28b5f3b 100644 GIT binary patch delta 1172 zcmXAbdrXy80Ki4uG`iqDuWNkgp65O16H*c`7m%8>dqEN(NRC-)rHLpgiGrD#dexQA zF=vjuB2 zQ&;~meqY~&x8AQTTToI|kyln;l9XJ3$eTjQ)Y$bgPgq{MBBtL{m3d#Td1QmJAZC1h z&|TSgL?|bmJ1UquJS8m>jHHC}GD9hm@RQ5Uj--aN!r@4IdiJD6!!xI5h9;F2mR8Iy znfx?qsY65ccamCTqX)e=ybnPi-~kE13m~9C0T&DdK@b9&U_6)%ia`mO13x56*sHdqUHMPVKM1|Eh-;c@sqJPTXk1=tGPVJEx_ufZGeFL)otqB!J1 z3CN2Ep+rOxLjonC43vqoP&Ud#`DiREK!s=`nu4aG>1YO;iK@_Iv;-|f%h77I234cA zXdT*wwxHeUYqTF7K!?zG=mh!^MSnu4P#fw(53mQjIE-`fDEtb}$J6l~T#1+AFYr#h z8}GsOcppBAPvbMV0XO0%+=j2b~y zCg;4<;#_cAop$GvbI19|`PX^q^f-@b4DCnz(`TrpBj_0V4y~e}&@J>^dXk={=V&wi zmA2DMw1ZxuU4H4G?4RYI?JxIN_~-kp{LB3-{U7;PG0LJzERChJ43@>RS%l@XJT{t* zVdGdSTf(-mgRGf#uugWBU1vAhEgr`ampp|J<7qsdXYeeZ&GYzZK8BCu1-y_?l)jRY~y<6|m`}F~RNFUM1^cmft z8+B7)THxJ4MPPoQD$rvF7+{bgW{^oV+8E=SB=fu(YVu8msWE%aL3222j+*1Gj1kL`8i+<`7|v76{pm%Gv(<_6u7?r3+cTj0Lx7P&PiQak?# Duz+Ri delta 1172 zcmXBFZBSK39Ds2FozdvV-Tm*P?Kx-9?%v&_nA8>Ua;36FE-2&+Lpr6F5h9X`sF<1Q zMV-4shP+i){GyX-&0joRaEnlFV5%h zv*8opl$hbQoxa_%2`?8^ESz3kRx!4)tgxhbe(hd=GNtdvt&jP?%8KPNy&q8OCmZgW zlvw|v+7xd^?9P7aP7nHG!;3r0fW(4;rQp=qJC zNu?8J&MhmR{9r?e4hh%Z7<4W!y3c>re;36dA4)(70kV-o15psAqG2cj{+2GT+?~_$t?WFz$^K#gvb(IC-M3<`K2~4rAxl~#tUT*gtHN4uZLz+!j#;Oy(^jMP ztJP|qx7w_WR);O^DfUczmOaNVx98gx_Huir{kFZzv7Km=lj5W~At&r)IHR11ljDqW z@|>|wsk7AC;_P!8oi?Z4x#V1Nt~u9vJSSZ8$9a&a@H8IcVV=Qr_!yqY$MW$!pBM0n z{1rZ%zr(Bf5BxXY=04)~cbRLu+)Z*rZn_(GGu%<`1h>GQ=)T}ij=EFbQg@a+$DQlm z61_w}5ifiqK_J0|Ew~Uu2`$EpWujU%iZ;hD7m;L3V(vptU z(vySaU^zrikT1#^a*muU=g9@~P5G8wCM)F%xl*o`pUEm&EqBPB^015^mp{v2dSwMXq$`_(~p zSe;aLs$Mk&3Ik<<^1%E+MW9>v(^wOos0V1K1KQ|;I!QmKlXb2x*Bf=M-lq>l^&x#k zAJ+}~jBe6rb+c~OSM?2jOW)RAx?A^{UM9g{l|?YW-xf?kUEj5pfL^Tv7k-t*pu Iqrr>+0io7q>;M1& diff --git a/JSONStudents/JSONStudents/Student.swift b/JSONStudents/JSONStudents/Student.swift index 766890e..f80b223 100644 --- a/JSONStudents/JSONStudents/Student.swift +++ b/JSONStudents/JSONStudents/Student.swift @@ -8,5 +8,8 @@ struct Student: CustomStringConvertible, Codable { let name: String let age: Int? let cohort: String? + + init(name: String, age: Int? = nil, cohort: String? = nil) { + (self.name, self.age, self.cohort) = (name, age, cohort) + } } - diff --git a/JSONStudents/JSONStudents/StudentManager.swift b/JSONStudents/JSONStudents/StudentManager.swift index 7c4dff4..4ba4cb0 100644 --- a/JSONStudents/JSONStudents/StudentManager.swift +++ b/JSONStudents/JSONStudents/StudentManager.swift @@ -8,9 +8,14 @@ class StudentManager: NSObject { .appendingPathComponent("students.json") func writeToFile() { + do { + data.write(to: url) + } } func readFromFile() { + do { + Data(contentsOf: url) + } } - } From 8dfef0ed953d06b0e9d3d9a0bc7813541c31346b Mon Sep 17 00:00:00 2001 From: Moses Robinson Date: Thu, 11 Oct 2018 14:20:36 -0700 Subject: [PATCH 3/5] creating create function --- .../UserInterfaceState.xcuserstate | Bin 12714 -> 24572 bytes .../JSONStudents/Base.lproj/Main.storyboard | 75 +++++++++++++++++- JSONStudents/JSONStudents/Student.swift | 12 +-- .../JSONStudents/StudentManager.swift | 20 ++++- .../JSONStudents/ViewController.swift | 29 ++++++- 5 files changed, 123 insertions(+), 13 deletions(-) diff --git a/JSONStudents/JSONStudents.xcodeproj/project.xcworkspace/xcuserdata/mosesrobinson.xcuserdatad/UserInterfaceState.xcuserstate b/JSONStudents/JSONStudents.xcodeproj/project.xcworkspace/xcuserdata/mosesrobinson.xcuserdatad/UserInterfaceState.xcuserstate index 888402f19fee035330fbff00ef76c10ef28b5f3b..0751447e12493ee6b03c0e69dfa8a8560ed7f5e2 100644 GIT binary patch literal 24572 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 delta 6577 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 diff --git a/JSONStudents/JSONStudents/Base.lproj/Main.storyboard b/JSONStudents/JSONStudents/Base.lproj/Main.storyboard index f1bcf38..443c207 100644 --- a/JSONStudents/JSONStudents/Base.lproj/Main.storyboard +++ b/JSONStudents/JSONStudents/Base.lproj/Main.storyboard @@ -1,7 +1,10 @@ - + + + + - + @@ -9,15 +12,81 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/JSONStudents/JSONStudents/Student.swift b/JSONStudents/JSONStudents/Student.swift index f80b223..1f0633b 100644 --- a/JSONStudents/JSONStudents/Student.swift +++ b/JSONStudents/JSONStudents/Student.swift @@ -2,14 +2,14 @@ import UIKit struct Student: CustomStringConvertible, Codable { var description: String { - // some code - } + var result = "\(name), \(cohort), \(age) years old" + return result +} let name: String let age: Int? let cohort: String? - - init(name: String, age: Int? = nil, cohort: String? = nil) { - (self.name, self.age, self.cohort) = (name, age, cohort) } -} + + + diff --git a/JSONStudents/JSONStudents/StudentManager.swift b/JSONStudents/JSONStudents/StudentManager.swift index 4ba4cb0..58c9a5b 100644 --- a/JSONStudents/JSONStudents/StudentManager.swift +++ b/JSONStudents/JSONStudents/StudentManager.swift @@ -8,14 +8,28 @@ class StudentManager: NSObject { .appendingPathComponent("students.json") func writeToFile() { - do { - data.write(to: url) + do { + let studentsEncoded = try JSONEncoder().encode(students) + if let string = String(data: studentsEncoded, encoding: .utf8) { + print(string) + } + + } catch { + print("Error: \(error)") } } func readFromFile() { do { - Data(contentsOf: url) + 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? = nil, cohort: String? = nil) { + } } } diff --git a/JSONStudents/JSONStudents/ViewController.swift b/JSONStudents/JSONStudents/ViewController.swift index 340ebd7..f355a47 100644 --- a/JSONStudents/JSONStudents/ViewController.swift +++ b/JSONStudents/JSONStudents/ViewController.swift @@ -9,11 +9,38 @@ import UIKit class ViewController: UIViewController { + + var studentManager = StudentManager() override func viewDidLoad() { super.viewDidLoad() - // Do any additional setup after loading the view, typically from a nib. } + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + studentManager.readFromFile() + } + + @IBOutlet weak var nameField: UITextField! + @IBOutlet weak var ageField: UITextField! + @IBOutlet weak var cohortField: UITextField! + + @IBAction func saveButton(_ sender: Any) { + studentManager.writeToFile() + guard let name = nameField.text, let age = ageField.text, let cohort = cohortField.text else { return } + studentManager.create(name: name, age: age, cohort: cohort) + studentManager.writeToFile() + } + + @IBAction func printButton(_ sender: Any) { + print(studentManager.students) + } + + + + + + } From f88f112360e4967d1cb24941ac17d58d41c78602 Mon Sep 17 00:00:00 2001 From: Moses Robinson Date: Thu, 11 Oct 2018 14:56:10 -0700 Subject: [PATCH 4/5] help, trying to fix view controller --- .../UserInterfaceState.xcuserstate | Bin 24572 -> 24763 bytes JSONStudents/JSONStudents/Student.swift | 4 ++++ .../JSONStudents/StudentManager.swift | 13 ++++++++----- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/JSONStudents/JSONStudents.xcodeproj/project.xcworkspace/xcuserdata/mosesrobinson.xcuserdatad/UserInterfaceState.xcuserstate b/JSONStudents/JSONStudents.xcodeproj/project.xcworkspace/xcuserdata/mosesrobinson.xcuserdatad/UserInterfaceState.xcuserstate index 0751447e12493ee6b03c0e69dfa8a8560ed7f5e2..e87f7c25894451335d54559c71dc5a658ceae283 100644 GIT binary patch delta 10636 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 delta 10408 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 ZZN6Q;1EK1W9SYa~31p$qhIik={{zJaS#|&b diff --git a/JSONStudents/JSONStudents/Student.swift b/JSONStudents/JSONStudents/Student.swift index 1f0633b..e9c3869 100644 --- a/JSONStudents/JSONStudents/Student.swift +++ b/JSONStudents/JSONStudents/Student.swift @@ -9,7 +9,11 @@ struct Student: CustomStringConvertible, Codable { let name: String let age: Int? let cohort: String? + + init(name: String, age: Int?, cohort: String?) { + (self.name, self.age, self.cohort) = (name, age, cohort) } +} diff --git a/JSONStudents/JSONStudents/StudentManager.swift b/JSONStudents/JSONStudents/StudentManager.swift index 58c9a5b..9cdc602 100644 --- a/JSONStudents/JSONStudents/StudentManager.swift +++ b/JSONStudents/JSONStudents/StudentManager.swift @@ -1,7 +1,7 @@ import UIKit class StudentManager: NSObject { - var students: [Student] = [] + var students = [Student]() let url = URL(fileURLWithPath: NSHomeDirectory()) .appendingPathComponent("Documents") @@ -24,12 +24,15 @@ class StudentManager: NSObject { let data = try Data(contentsOf: url) let studentsDecoded = try JSONDecoder().decode([Student].self, from: data) students = studentsDecoded + print(students) } catch { print("Error: \(error)") } - - func create(name: String, age: Int? = nil, cohort: String? = nil) { - - } + } + + + func create(name: String, age: Int?, cohort: String?) { + let student = Student(name: name, age: age, cohort: cohort) + students.append(student) } } From d33a6a18e3e3a6914e2ebcc6b0d4268dd1a3830d Mon Sep 17 00:00:00 2001 From: Moses Robinson Date: Thu, 11 Oct 2018 16:01:56 -0700 Subject: [PATCH 5/5] completed, and made changes to storyboard auto layout needs more work --- .../UserInterfaceState.xcuserstate | Bin 24763 -> 24750 bytes .../JSONStudents/Base.lproj/Main.storyboard | 175 ++++++++++++------ JSONStudents/JSONStudents/Student.swift | 5 +- .../JSONStudents/ViewController.swift | 11 +- 4 files changed, 122 insertions(+), 69 deletions(-) diff --git a/JSONStudents/JSONStudents.xcodeproj/project.xcworkspace/xcuserdata/mosesrobinson.xcuserdatad/UserInterfaceState.xcuserstate b/JSONStudents/JSONStudents.xcodeproj/project.xcworkspace/xcuserdata/mosesrobinson.xcuserdatad/UserInterfaceState.xcuserstate index e87f7c25894451335d54559c71dc5a658ceae283..bb077d3f831c32c4baaaed1e5e5f79b4f209cf36 100644 GIT binary patch delta 10052 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 MRduiaPVe>q0M->ZfdBvi delta 9964 zcmZ`;2Vhgh|9|)HE@_fxH%Up-CTUC4Hakt)v|;Z(nzBbJv`DcOXv-FIk0nE>@K`d0 z4)%~Cf}#kDA|T2JK@pMR1SebgUs{Tyzkgq|-n)C>&wan2@4C0`AlP>hysCv3K>~j{ z$qJR=qXjJ&hwm}>nFoLc5Fj815}*VIU<7d>9+*HXNCQ6L2N|FdXbgIQo}d@#4f=q- zpdaWD27rMe4-|r-pcsq*p9A zR?iyPhHNSuWE-*V*!FA(wj`rzUyNBJ+hTmroum{;A>{0d@dy+lRUShvwudvtH>+JXJ z5A2WZZT5He56D0OSqLG53aErCsD?362jgHoOoFK}9r|Ds*c7&e?O_+#8}@;HVF4_J zLtzOV52wKCa29+8z6uw>#c(-%9ah10a1-1H55bSZ@MCxwegcocqwpB~6ds3Pz>Dw_ z{1Sc#e}X^5U*T`?F?@m;1Q3e^NQyK_i*zUvC835W8Cj7Hc~LeBqPD0VYL7agj;Jf@ ziF%>ls1M3VgV7K)5{*KmQ7I}z1lqE}FOAzFf#qH0uw)}nQ2J=%(P zqIc1IXg~S{9YIIYG4we)i_W3T=xcNZeS>bGAJ8x85A-Jnn8gqyjIjudu>vcx3Mb%1 zoP-t7vaTt30{hq;n(nTyaKPq>+pKK0dL3e;C=XA{2tzq-^WMr zQG5)4iqGNm_yYa{e~Yi->-al-58uZR@I(AazzCoK39vvUkPFlTZI7gqF~$5Lm< zLr4KBBtyvyWY{KpvyPw>lf(p>Am|3VgB%c|w=N

AQ{|m&h%0o80B6%g)LNfx!_` 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 hZd$G**PZLlZI# - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + diff --git a/JSONStudents/JSONStudents/Student.swift b/JSONStudents/JSONStudents/Student.swift index e9c3869..e0fb30a 100644 --- a/JSONStudents/JSONStudents/Student.swift +++ b/JSONStudents/JSONStudents/Student.swift @@ -2,7 +2,10 @@ import UIKit struct Student: CustomStringConvertible, Codable { var description: String { - var result = "\(name), \(cohort), \(age) years old" + var result = "\(name), Cohort: \(cohort ?? "iOS3")" + if let age = age { + result += ", \(age) years old" + } return result } diff --git a/JSONStudents/JSONStudents/ViewController.swift b/JSONStudents/JSONStudents/ViewController.swift index f355a47..2672506 100644 --- a/JSONStudents/JSONStudents/ViewController.swift +++ b/JSONStudents/JSONStudents/ViewController.swift @@ -1,11 +1,3 @@ -// -// ViewController.swift -// JSONStudents -// -// Created by Moses Robinson on 10/11/18. -// Copyright © 2018 Moses Robinson. All rights reserved. -// - import UIKit class ViewController: UIViewController { @@ -28,10 +20,11 @@ class ViewController: UIViewController { @IBAction func saveButton(_ sender: Any) { studentManager.writeToFile() guard let name = nameField.text, let age = ageField.text, let cohort = cohortField.text else { return } - studentManager.create(name: name, age: age, cohort: cohort) + studentManager.create(name: name, age: Int(age), cohort: cohort) studentManager.writeToFile() } + @IBAction func printButton(_ sender: Any) { print(studentManager.students) }