From ed7865fa9f2ac5ae5d09141cc5e25b01e29b8d03 Mon Sep 17 00:00:00 2001 From: Frulwinn Date: Thu, 11 Oct 2018 13:08:01 -0700 Subject: [PATCH 1/4] Initial Commit --- JSONStudents.xcodeproj/project.pbxproj | 343 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../UserInterfaceState.xcuserstate | Bin 0 -> 10923 bytes .../xcschemes/xcschememanagement.plist | 14 + JSONStudents/AppDelegate.swift | 46 +++ .../AppIcon.appiconset/Contents.json | 98 +++++ JSONStudents/Assets.xcassets/Contents.json | 6 + .../Base.lproj/LaunchScreen.storyboard | 25 ++ JSONStudents/Base.lproj/Main.storyboard | 24 ++ JSONStudents/Info.plist | 45 +++ JSONStudents/Student.swift | 10 + JSONStudents/ViewController.swift | 20 + 13 files changed, 646 insertions(+) create mode 100644 JSONStudents.xcodeproj/project.pbxproj create mode 100644 JSONStudents.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 JSONStudents.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 JSONStudents.xcodeproj/project.xcworkspace/xcuserdata/fru.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 JSONStudents.xcodeproj/xcuserdata/fru.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 JSONStudents/AppDelegate.swift create mode 100644 JSONStudents/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 JSONStudents/Assets.xcassets/Contents.json create mode 100644 JSONStudents/Base.lproj/LaunchScreen.storyboard create mode 100644 JSONStudents/Base.lproj/Main.storyboard create mode 100644 JSONStudents/Info.plist create mode 100644 JSONStudents/Student.swift create mode 100644 JSONStudents/ViewController.swift diff --git a/JSONStudents.xcodeproj/project.pbxproj b/JSONStudents.xcodeproj/project.pbxproj new file mode 100644 index 0000000..173ddca --- /dev/null +++ b/JSONStudents.xcodeproj/project.pbxproj @@ -0,0 +1,343 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 77CAFF92216FDCFE00A46631 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77CAFF91216FDCFE00A46631 /* AppDelegate.swift */; }; + 77CAFF94216FDCFE00A46631 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77CAFF93216FDCFE00A46631 /* ViewController.swift */; }; + 77CAFF97216FDCFE00A46631 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 77CAFF95216FDCFE00A46631 /* Main.storyboard */; }; + 77CAFF99216FDD0300A46631 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 77CAFF98216FDD0300A46631 /* Assets.xcassets */; }; + 77CAFF9C216FDD0300A46631 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 77CAFF9A216FDD0300A46631 /* LaunchScreen.storyboard */; }; + 77CAFFA4216FDD6600A46631 /* Student.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77CAFFA3216FDD6600A46631 /* Student.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 77CAFF8E216FDCFE00A46631 /* JSONStudents.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = JSONStudents.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 77CAFF91216FDCFE00A46631 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 77CAFF93216FDCFE00A46631 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + 77CAFF96216FDCFE00A46631 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 77CAFF98216FDD0300A46631 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 77CAFF9B216FDD0300A46631 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 77CAFF9D216FDD0300A46631 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 77CAFFA3216FDD6600A46631 /* Student.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Student.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 77CAFF8B216FDCFE00A46631 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 77CAFF85216FDCFE00A46631 = { + isa = PBXGroup; + children = ( + 77CAFF90216FDCFE00A46631 /* JSONStudents */, + 77CAFF8F216FDCFE00A46631 /* Products */, + ); + sourceTree = ""; + }; + 77CAFF8F216FDCFE00A46631 /* Products */ = { + isa = PBXGroup; + children = ( + 77CAFF8E216FDCFE00A46631 /* JSONStudents.app */, + ); + name = Products; + sourceTree = ""; + }; + 77CAFF90216FDCFE00A46631 /* JSONStudents */ = { + isa = PBXGroup; + children = ( + 77CAFF91216FDCFE00A46631 /* AppDelegate.swift */, + 77CAFF93216FDCFE00A46631 /* ViewController.swift */, + 77CAFFA3216FDD6600A46631 /* Student.swift */, + 77CAFF95216FDCFE00A46631 /* Main.storyboard */, + 77CAFF98216FDD0300A46631 /* Assets.xcassets */, + 77CAFF9A216FDD0300A46631 /* LaunchScreen.storyboard */, + 77CAFF9D216FDD0300A46631 /* Info.plist */, + ); + path = JSONStudents; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 77CAFF8D216FDCFE00A46631 /* JSONStudents */ = { + isa = PBXNativeTarget; + buildConfigurationList = 77CAFFA0216FDD0300A46631 /* Build configuration list for PBXNativeTarget "JSONStudents" */; + buildPhases = ( + 77CAFF8A216FDCFE00A46631 /* Sources */, + 77CAFF8B216FDCFE00A46631 /* Frameworks */, + 77CAFF8C216FDCFE00A46631 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = JSONStudents; + productName = JSONStudents; + productReference = 77CAFF8E216FDCFE00A46631 /* JSONStudents.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 77CAFF86216FDCFE00A46631 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1000; + LastUpgradeCheck = 1000; + ORGANIZATIONNAME = "Frulwinn Collick"; + TargetAttributes = { + 77CAFF8D216FDCFE00A46631 = { + CreatedOnToolsVersion = 10.0; + }; + }; + }; + buildConfigurationList = 77CAFF89216FDCFE00A46631 /* Build configuration list for PBXProject "JSONStudents" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 77CAFF85216FDCFE00A46631; + productRefGroup = 77CAFF8F216FDCFE00A46631 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 77CAFF8D216FDCFE00A46631 /* JSONStudents */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 77CAFF8C216FDCFE00A46631 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 77CAFF9C216FDD0300A46631 /* LaunchScreen.storyboard in Resources */, + 77CAFF99216FDD0300A46631 /* Assets.xcassets in Resources */, + 77CAFF97216FDCFE00A46631 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 77CAFF8A216FDCFE00A46631 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 77CAFF94216FDCFE00A46631 /* ViewController.swift in Sources */, + 77CAFFA4216FDD6600A46631 /* Student.swift in Sources */, + 77CAFF92216FDCFE00A46631 /* AppDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 77CAFF95216FDCFE00A46631 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 77CAFF96216FDCFE00A46631 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 77CAFF9A216FDD0300A46631 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 77CAFF9B216FDD0300A46631 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 77CAFF9E216FDD0300A46631 /* 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; + }; + 77CAFF9F216FDD0300A46631 /* 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; + }; + 77CAFFA1216FDD0300A46631 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = JSONStudents/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = Fru.JSONStudents; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 77CAFFA2216FDD0300A46631 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = JSONStudents/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = Fru.JSONStudents; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 77CAFF89216FDCFE00A46631 /* Build configuration list for PBXProject "JSONStudents" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 77CAFF9E216FDD0300A46631 /* Debug */, + 77CAFF9F216FDD0300A46631 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 77CAFFA0216FDD0300A46631 /* Build configuration list for PBXNativeTarget "JSONStudents" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 77CAFFA1216FDD0300A46631 /* Debug */, + 77CAFFA2216FDD0300A46631 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 77CAFF86216FDCFE00A46631 /* Project object */; +} diff --git a/JSONStudents.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/JSONStudents.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..8e5e72d --- /dev/null +++ b/JSONStudents.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/JSONStudents.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/JSONStudents.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/JSONStudents.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/JSONStudents.xcodeproj/project.xcworkspace/xcuserdata/fru.xcuserdatad/UserInterfaceState.xcuserstate b/JSONStudents.xcodeproj/project.xcworkspace/xcuserdata/fru.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..f291c992880cc8c892c1c94e98ef0064a8ac578c GIT binary patch literal 10923 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 OUzzpdYxsYv`+ooisFL6S literal 0 HcmV?d00001 diff --git a/JSONStudents.xcodeproj/xcuserdata/fru.xcuserdatad/xcschemes/xcschememanagement.plist b/JSONStudents.xcodeproj/xcuserdata/fru.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..a3ecab7 --- /dev/null +++ b/JSONStudents.xcodeproj/xcuserdata/fru.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + JSONStudents.xcscheme + + orderHint + 0 + + + + diff --git a/JSONStudents/AppDelegate.swift b/JSONStudents/AppDelegate.swift new file mode 100644 index 0000000..fe6c75e --- /dev/null +++ b/JSONStudents/AppDelegate.swift @@ -0,0 +1,46 @@ +// +// AppDelegate.swift +// JSONStudents +// +// Created by Frulwinn Collick on 10/11/18. +// Copyright © 2018 Frulwinn Collick. 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/Assets.xcassets/AppIcon.appiconset/Contents.json b/JSONStudents/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..d8db8d6 --- /dev/null +++ b/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/Assets.xcassets/Contents.json b/JSONStudents/Assets.xcassets/Contents.json new file mode 100644 index 0000000..da4a164 --- /dev/null +++ b/JSONStudents/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/JSONStudents/Base.lproj/LaunchScreen.storyboard b/JSONStudents/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..bfa3612 --- /dev/null +++ b/JSONStudents/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/JSONStudents/Base.lproj/Main.storyboard b/JSONStudents/Base.lproj/Main.storyboard new file mode 100644 index 0000000..f1bcf38 --- /dev/null +++ b/JSONStudents/Base.lproj/Main.storyboard @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/JSONStudents/Info.plist b/JSONStudents/Info.plist new file mode 100644 index 0000000..16be3b6 --- /dev/null +++ b/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/Student.swift b/JSONStudents/Student.swift new file mode 100644 index 0000000..d29e123 --- /dev/null +++ b/JSONStudents/Student.swift @@ -0,0 +1,10 @@ +import UIKit + +struct Student: CustomStringConvertible, Codable { + var description: String + + let name: String + let age: Int? + let cohort: String? + +} diff --git a/JSONStudents/ViewController.swift b/JSONStudents/ViewController.swift new file mode 100644 index 0000000..bfd994d --- /dev/null +++ b/JSONStudents/ViewController.swift @@ -0,0 +1,20 @@ +// +// ViewController.swift +// JSONStudents +// +// Created by Frulwinn Collick on 10/11/18. +// Copyright © 2018 Frulwinn Collick. 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 6829006144dcf61619a3d6f37331902db35876a4 Mon Sep 17 00:00:00 2001 From: Frulwinn Date: Thu, 11 Oct 2018 14:21:50 -0700 Subject: [PATCH 2/4] Added items to Main.storyboard --- JSONStudents.xcodeproj/project.pbxproj | 4 + .../UserInterfaceState.xcuserstate | Bin 10923 -> 18062 bytes JSONStudents/Base.lproj/Main.storyboard | 99 +++++++++++++++++- JSONStudents/Student.swift | 10 +- JSONStudents/StudentManager.swift | 25 +++++ JSONStudents/ViewController.swift | 42 ++++++-- 6 files changed, 164 insertions(+), 16 deletions(-) create mode 100644 JSONStudents/StudentManager.swift diff --git a/JSONStudents.xcodeproj/project.pbxproj b/JSONStudents.xcodeproj/project.pbxproj index 173ddca..068a958 100644 --- a/JSONStudents.xcodeproj/project.pbxproj +++ b/JSONStudents.xcodeproj/project.pbxproj @@ -13,6 +13,7 @@ 77CAFF99216FDD0300A46631 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 77CAFF98216FDD0300A46631 /* Assets.xcassets */; }; 77CAFF9C216FDD0300A46631 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 77CAFF9A216FDD0300A46631 /* LaunchScreen.storyboard */; }; 77CAFFA4216FDD6600A46631 /* Student.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77CAFFA3216FDD6600A46631 /* Student.swift */; }; + 77CAFFA6216FE5F400A46631 /* StudentManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77CAFFA5216FE5F400A46631 /* StudentManager.swift */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -24,6 +25,7 @@ 77CAFF9B216FDD0300A46631 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 77CAFF9D216FDD0300A46631 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 77CAFFA3216FDD6600A46631 /* Student.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Student.swift; sourceTree = ""; }; + 77CAFFA5216FE5F400A46631 /* StudentManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StudentManager.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -59,6 +61,7 @@ 77CAFF91216FDCFE00A46631 /* AppDelegate.swift */, 77CAFF93216FDCFE00A46631 /* ViewController.swift */, 77CAFFA3216FDD6600A46631 /* Student.swift */, + 77CAFFA5216FE5F400A46631 /* StudentManager.swift */, 77CAFF95216FDCFE00A46631 /* Main.storyboard */, 77CAFF98216FDD0300A46631 /* Assets.xcassets */, 77CAFF9A216FDD0300A46631 /* LaunchScreen.storyboard */, @@ -139,6 +142,7 @@ buildActionMask = 2147483647; files = ( 77CAFF94216FDCFE00A46631 /* ViewController.swift in Sources */, + 77CAFFA6216FE5F400A46631 /* StudentManager.swift in Sources */, 77CAFFA4216FDD6600A46631 /* Student.swift in Sources */, 77CAFF92216FDCFE00A46631 /* AppDelegate.swift in Sources */, ); diff --git a/JSONStudents.xcodeproj/project.xcworkspace/xcuserdata/fru.xcuserdatad/UserInterfaceState.xcuserstate b/JSONStudents.xcodeproj/project.xcworkspace/xcuserdata/fru.xcuserdatad/UserInterfaceState.xcuserstate index f291c992880cc8c892c1c94e98ef0064a8ac578c..c1246281445213e7f602d0d6d8339ce87708b319 100644 GIT binary patch literal 18062 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 diff --git a/JSONStudents/Base.lproj/Main.storyboard b/JSONStudents/Base.lproj/Main.storyboard index f1bcf38..c99b087 100644 --- a/JSONStudents/Base.lproj/Main.storyboard +++ b/JSONStudents/Base.lproj/Main.storyboard @@ -1,7 +1,10 @@ - + + + + - + @@ -9,16 +12,106 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/JSONStudents/Student.swift b/JSONStudents/Student.swift index d29e123..bed6e4e 100644 --- a/JSONStudents/Student.swift +++ b/JSONStudents/Student.swift @@ -1,10 +1,16 @@ import UIKit struct Student: CustomStringConvertible, Codable { - var description: String + var description: String{ + var result = "\(name), Cohort: \(cohort ?? "[unknown cohort]")" + if let age = age { + result += ", \(age) years old" + } + return result + } let name: String let age: Int? let cohort: String? + } -} diff --git a/JSONStudents/StudentManager.swift b/JSONStudents/StudentManager.swift new file mode 100644 index 0000000..d329213 --- /dev/null +++ b/JSONStudents/StudentManager.swift @@ -0,0 +1,25 @@ +import UIKit + +class StudentManager: NSObject { + var students: [Student] = [] +} + +let url = URL(fileURLWithPath: NSHomeDirectory()) + .appendingPathComponent("Documents") + .appendingPathComponent("students.json") + +func writeToFile(){ + //do catch + do { + let nameencoded = try JSONEncoder().encode(name) + if let string = String(data: nameencoded, encoding: utf8){ + print(string) + } + let namedecoded = try + JSONDecoder().decode(Student.self, from: nameencoded) + print(name) +} + +func readFromFile(){ + //do catch +} diff --git a/JSONStudents/ViewController.swift b/JSONStudents/ViewController.swift index bfd994d..3765d15 100644 --- a/JSONStudents/ViewController.swift +++ b/JSONStudents/ViewController.swift @@ -1,20 +1,40 @@ -// -// ViewController.swift -// JSONStudents -// -// Created by Frulwinn Collick on 10/11/18. -// Copyright © 2018 Frulwinn Collick. All rights reserved. -// - import UIKit class ViewController: UIViewController { - + + @IBOutlet weak var nameLabel: UILabel! + + @IBOutlet weak var ageLabel: UILabel! + + @IBOutlet weak var cohortLabel: UILabel! + + @IBOutlet weak var nameTextField: UITextField! + + @IBOutlet weak var ageTextField: UITextField! + + @IBOutlet weak var cohortTextField: UITextField! + + @IBAction func printButton(_ sender: Any) { + print(studentManager.students) + } + + @IBAction func saveButton(_ sender: Any) { + guard let name = nameTextField.text, + let age = ageTextField.text, + let cohort = cohortTextField.text + else {return} + studentManager.create(name:name, age: age, cohort: cohort) + studentManager.writeToFile[] + } + + override func viewDidLoad() { super.viewDidLoad() - // Do any additional setup after loading the view, typically from a nib. + } - + override func viewWillAppear(_ animated: Bool) { + <#code#> + } } From 628aba52e11f3b21ddbf3d3eecfab777310d56c7 Mon Sep 17 00:00:00 2001 From: Frulwinn Date: Thu, 11 Oct 2018 16:08:50 -0700 Subject: [PATCH 3/4] Completed StudentManager and ViewController files --- .../UserInterfaceState.xcuserstate | Bin 18062 -> 25506 bytes JSONStudents/Base.lproj/Main.storyboard | 121 +++++++++++------- JSONStudents/Student.swift | 2 +- JSONStudents/StudentManager.swift | 31 +++-- JSONStudents/ViewController.swift | 9 +- 5 files changed, 100 insertions(+), 63 deletions(-) diff --git a/JSONStudents.xcodeproj/project.xcworkspace/xcuserdata/fru.xcuserdatad/UserInterfaceState.xcuserstate b/JSONStudents.xcodeproj/project.xcworkspace/xcuserdata/fru.xcuserdatad/UserInterfaceState.xcuserstate index c1246281445213e7f602d0d6d8339ce87708b319..c07a8fd77c7bcb44cd80b9b10f49cd37deb4f45a 100644 GIT binary patch literal 25506 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

e?& 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 diff --git a/JSONStudents/Base.lproj/Main.storyboard b/JSONStudents/Base.lproj/Main.storyboard index c99b087..4c3920e 100644 --- a/JSONStudents/Base.lproj/Main.storyboard +++ b/JSONStudents/Base.lproj/Main.storyboard @@ -17,54 +17,71 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + diff --git a/JSONStudents/Student.swift b/JSONStudents/Student.swift index bed6e4e..e5b1b3a 100644 --- a/JSONStudents/Student.swift +++ b/JSONStudents/Student.swift @@ -5,7 +5,7 @@ struct Student: CustomStringConvertible, Codable { var result = "\(name), Cohort: \(cohort ?? "[unknown cohort]")" if let age = age { result += ", \(age) years old" - } + } return result } diff --git a/JSONStudents/StudentManager.swift b/JSONStudents/StudentManager.swift index d329213..075c418 100644 --- a/JSONStudents/StudentManager.swift +++ b/JSONStudents/StudentManager.swift @@ -2,24 +2,35 @@ import UIKit class StudentManager: NSObject { var students: [Student] = [] -} let url = URL(fileURLWithPath: NSHomeDirectory()) .appendingPathComponent("Documents") .appendingPathComponent("students.json") func writeToFile(){ - //do catch do { - let nameencoded = try JSONEncoder().encode(name) - if let string = String(data: nameencoded, encoding: utf8){ + let studentsEncoded = try JSONEncoder().encode(students) + if let string = String(data: studentsEncoded, encoding: .utf8){ print(string) } - let namedecoded = try - JSONDecoder().decode(Student.self, from: nameencoded) - print(name) + } catch { + print ("Error: \(error)") + } } - -func readFromFile(){ - //do catch +func readFromFile() { + do { + let data = try Data(contentsOf: url) + let studentsDecoded = try JSONDecoder().decode([Student].self, from: data) + students = studentsDecoded + print(students) + } catch { + print("Error: \(error)") + } + } +func createFile(name: String, age: Int?, cohort: String?) { + let student = Student.init(name: name, age: age, cohort: cohort) + students.append(student) + print("decoded") + } } + diff --git a/JSONStudents/ViewController.swift b/JSONStudents/ViewController.swift index 3765d15..43575ca 100644 --- a/JSONStudents/ViewController.swift +++ b/JSONStudents/ViewController.swift @@ -1,6 +1,7 @@ import UIKit class ViewController: UIViewController { + var studentManager = StudentManager() @IBOutlet weak var nameLabel: UILabel! @@ -23,18 +24,18 @@ class ViewController: UIViewController { let age = ageTextField.text, let cohort = cohortTextField.text else {return} - studentManager.create(name:name, age: age, cohort: cohort) - studentManager.writeToFile[] + studentManager.createFile(name:name, age: Int(age), cohort: cohort) + studentManager.writeToFile() } - override func viewDidLoad() { super.viewDidLoad() } override func viewWillAppear(_ animated: Bool) { - <#code#> + super.viewWillAppear(animated) + studentManager.readFromFile() } } From 8e231194766280c0824186e137a2fee099126137 Mon Sep 17 00:00:00 2001 From: Frulwinn Date: Thu, 11 Oct 2018 17:09:17 -0700 Subject: [PATCH 4/4] Tweaked IU --- .../UserInterfaceState.xcuserstate | Bin 25506 -> 25347 bytes JSONStudents/Base.lproj/Main.storyboard | 48 ++++++++++-------- 2 files changed, 27 insertions(+), 21 deletions(-) diff --git a/JSONStudents.xcodeproj/project.xcworkspace/xcuserdata/fru.xcuserdatad/UserInterfaceState.xcuserstate b/JSONStudents.xcodeproj/project.xcworkspace/xcuserdata/fru.xcuserdatad/UserInterfaceState.xcuserstate index c07a8fd77c7bcb44cd80b9b10f49cd37deb4f45a..f11ed9e657729aadf5f3bec802504a694ca8886f 100644 GIT binary patch delta 7304 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 delta 7558 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 diff --git a/JSONStudents/Base.lproj/Main.storyboard b/JSONStudents/Base.lproj/Main.storyboard index 4c3920e..5035a9b 100644 --- a/JSONStudents/Base.lproj/Main.storyboard +++ b/JSONStudents/Base.lproj/Main.storyboard @@ -18,20 +18,20 @@ - + - + - - + - - + - - +