From 7dc78c06265985095a505f3e85e8f12c575167ca Mon Sep 17 00:00:00 2001 From: Rwoltx Date: Thu, 11 Oct 2018 22:09:34 -0400 Subject: [PATCH 1/2] JSON Encoding --- .DS_Store | Bin 0 -> 6148 bytes JSON Encoding.xcodeproj/project.pbxproj | 355 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../UserInterfaceState.xcuserstate | Bin 0 -> 31270 bytes .../xcschemes/xcschememanagement.plist | 14 + JSON Encoding/AppDelegate.swift | 46 +++ .../AppIcon.appiconset/Contents.json | 98 +++++ JSON Encoding/Assets.xcassets/Contents.json | 6 + .../Base.lproj/LaunchScreen.storyboard | 25 ++ JSON Encoding/Base.lproj/Main.storyboard | 112 ++++++ JSON Encoding/Info.plist | 45 +++ JSON Encoding/Model/Student.swift | 41 ++ JSON Encoding/Model/StudentManager.swift | 45 +++ JSON Encoding/ViewController.swift | 54 +++ 15 files changed, 856 insertions(+) create mode 100644 .DS_Store create mode 100644 JSON Encoding.xcodeproj/project.pbxproj create mode 100644 JSON Encoding.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 JSON Encoding.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 JSON Encoding.xcodeproj/project.xcworkspace/xcuserdata/RickWolter.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 JSON Encoding.xcodeproj/xcuserdata/RickWolter.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 JSON Encoding/AppDelegate.swift create mode 100644 JSON Encoding/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 JSON Encoding/Assets.xcassets/Contents.json create mode 100644 JSON Encoding/Base.lproj/LaunchScreen.storyboard create mode 100644 JSON Encoding/Base.lproj/Main.storyboard create mode 100644 JSON Encoding/Info.plist create mode 100644 JSON Encoding/Model/Student.swift create mode 100644 JSON Encoding/Model/StudentManager.swift create mode 100644 JSON Encoding/ViewController.swift diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..b2ef06f2fb8cdc23a820ba981a6ce47900ea3da6 GIT binary patch literal 6148 zcmeHK&2AGh5FWQn*?=l?Kq~6V7bFg$N(eLugtVmTp-B9QMQ{Mr?slVO(RLjr8v;#( z_B}x2%z;IV=Gg;ai(JQIiVBBfMej_W`N&akJhM1DHTWF-w&9(@>Ppo#4_EXknYnx zlC()V?UJGdaXIzoBSjznAO9>eo{R?e%=jD+vUF6`>tDpeqIYKLtY5)z*?%7P)g&yU zVmxX`!>8PP5EcE{+K-gVe%Mj`IPFfhs~0y^UPNi$9qQmT>B8mNlQd7%q^-tzGSYcM zGr`ZPY*$yO)2oeZ&1OxuZZu~#Ic>G-HF>?cKATnimCKD=TRVHN_ooN5H*Yl|Byj9$ zxnS`-yo2!zx?YCEJX3iOUYud&WMZ*3uPo7B8qg4wznCYRJ|V;VLu6OzA-3l>b?7c| zjrJ%x5^)m|hc^~oC#R1A`{(t~pT4EL6*~qT1HWN_&j$%*3@nxg_0fSwmjFNy!&+eL zPk*4~0bpRUG>8$1Frh#bDr|`%Y~>(KIOYTEUm7&wB=nP!$39uu3Psq$LrCpTA~5J$ z$ADvCo`FTvt@8c9d2;biX`;`WD2pW4G gYlE-iOHeJClWYJ3i={z~K-`CbrolCifxpVYH$bhApa1{> literal 0 HcmV?d00001 diff --git a/JSON Encoding.xcodeproj/project.pbxproj b/JSON Encoding.xcodeproj/project.pbxproj new file mode 100644 index 0000000..3cd84d6 --- /dev/null +++ b/JSON Encoding.xcodeproj/project.pbxproj @@ -0,0 +1,355 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 1C2CEAEF216FE058007A4192 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C2CEAEE216FE058007A4192 /* AppDelegate.swift */; }; + 1C2CEAF1216FE058007A4192 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C2CEAF0216FE058007A4192 /* ViewController.swift */; }; + 1C2CEAF4216FE058007A4192 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1C2CEAF2216FE058007A4192 /* Main.storyboard */; }; + 1C2CEAF6216FE05A007A4192 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1C2CEAF5216FE05A007A4192 /* Assets.xcassets */; }; + 1C2CEAF9216FE05A007A4192 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1C2CEAF7216FE05A007A4192 /* LaunchScreen.storyboard */; }; + 1C2CEB01216FE092007A4192 /* Student.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C2CEB00216FE092007A4192 /* Student.swift */; }; + 1C2CEB03216FE922007A4192 /* StudentManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C2CEB02216FE922007A4192 /* StudentManager.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 1C2CEAEB216FE058007A4192 /* JSON Encoding.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "JSON Encoding.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 1C2CEAEE216FE058007A4192 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 1C2CEAF0216FE058007A4192 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + 1C2CEAF3216FE058007A4192 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 1C2CEAF5216FE05A007A4192 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 1C2CEAF8216FE05A007A4192 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 1C2CEAFA216FE05A007A4192 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 1C2CEB00216FE092007A4192 /* Student.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Student.swift; sourceTree = ""; }; + 1C2CEB02216FE922007A4192 /* StudentManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StudentManager.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 1C2CEAE8216FE058007A4192 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 1C2CEAE2216FE058007A4192 = { + isa = PBXGroup; + children = ( + 1C2CEAED216FE058007A4192 /* JSON Encoding */, + 1C2CEAEC216FE058007A4192 /* Products */, + ); + sourceTree = ""; + }; + 1C2CEAEC216FE058007A4192 /* Products */ = { + isa = PBXGroup; + children = ( + 1C2CEAEB216FE058007A4192 /* JSON Encoding.app */, + ); + name = Products; + sourceTree = ""; + }; + 1C2CEAED216FE058007A4192 /* JSON Encoding */ = { + isa = PBXGroup; + children = ( + 1C2CEAEE216FE058007A4192 /* AppDelegate.swift */, + 1C2CEAF0216FE058007A4192 /* ViewController.swift */, + 1C2CEAF2216FE058007A4192 /* Main.storyboard */, + 1C2CEAF5216FE05A007A4192 /* Assets.xcassets */, + 1C2CEAF7216FE05A007A4192 /* LaunchScreen.storyboard */, + 1C2CEAFA216FE05A007A4192 /* Info.plist */, + 1C2CEB04216FF7EF007A4192 /* Model */, + ); + path = "JSON Encoding"; + sourceTree = ""; + }; + 1C2CEB04216FF7EF007A4192 /* Model */ = { + isa = PBXGroup; + children = ( + 1C2CEB00216FE092007A4192 /* Student.swift */, + 1C2CEB02216FE922007A4192 /* StudentManager.swift */, + ); + path = Model; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 1C2CEAEA216FE058007A4192 /* JSON Encoding */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1C2CEAFD216FE05A007A4192 /* Build configuration list for PBXNativeTarget "JSON Encoding" */; + buildPhases = ( + 1C2CEAE7216FE058007A4192 /* Sources */, + 1C2CEAE8216FE058007A4192 /* Frameworks */, + 1C2CEAE9216FE058007A4192 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "JSON Encoding"; + productName = "JSON Encoding"; + productReference = 1C2CEAEB216FE058007A4192 /* JSON Encoding.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 1C2CEAE3216FE058007A4192 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1000; + LastUpgradeCheck = 1000; + ORGANIZATIONNAME = RNWolter; + TargetAttributes = { + 1C2CEAEA216FE058007A4192 = { + CreatedOnToolsVersion = 10.0; + }; + }; + }; + buildConfigurationList = 1C2CEAE6216FE058007A4192 /* Build configuration list for PBXProject "JSON Encoding" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 1C2CEAE2216FE058007A4192; + productRefGroup = 1C2CEAEC216FE058007A4192 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 1C2CEAEA216FE058007A4192 /* JSON Encoding */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 1C2CEAE9216FE058007A4192 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1C2CEAF9216FE05A007A4192 /* LaunchScreen.storyboard in Resources */, + 1C2CEAF6216FE05A007A4192 /* Assets.xcassets in Resources */, + 1C2CEAF4216FE058007A4192 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 1C2CEAE7216FE058007A4192 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1C2CEAF1216FE058007A4192 /* ViewController.swift in Sources */, + 1C2CEB03216FE922007A4192 /* StudentManager.swift in Sources */, + 1C2CEB01216FE092007A4192 /* Student.swift in Sources */, + 1C2CEAEF216FE058007A4192 /* AppDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 1C2CEAF2216FE058007A4192 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 1C2CEAF3216FE058007A4192 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 1C2CEAF7216FE05A007A4192 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 1C2CEAF8216FE05A007A4192 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 1C2CEAFB216FE05A007A4192 /* 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; + }; + 1C2CEAFC216FE05A007A4192 /* 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; + }; + 1C2CEAFE216FE05A007A4192 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = "JSON Encoding/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.RNWolter.JSON-Encoding"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 1C2CEAFF216FE05A007A4192 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = "JSON Encoding/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.RNWolter.JSON-Encoding"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1C2CEAE6216FE058007A4192 /* Build configuration list for PBXProject "JSON Encoding" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1C2CEAFB216FE05A007A4192 /* Debug */, + 1C2CEAFC216FE05A007A4192 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 1C2CEAFD216FE05A007A4192 /* Build configuration list for PBXNativeTarget "JSON Encoding" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1C2CEAFE216FE05A007A4192 /* Debug */, + 1C2CEAFF216FE05A007A4192 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 1C2CEAE3216FE058007A4192 /* Project object */; +} diff --git a/JSON Encoding.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/JSON Encoding.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..eb2a3d9 --- /dev/null +++ b/JSON Encoding.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/JSON Encoding.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/JSON Encoding.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/JSON Encoding.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/JSON Encoding.xcodeproj/project.xcworkspace/xcuserdata/RickWolter.xcuserdatad/UserInterfaceState.xcuserstate b/JSON Encoding.xcodeproj/project.xcworkspace/xcuserdata/RickWolter.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..51eb0bb0a9d5120c3c15f87eea50c4ddcfc9eebd GIT binary patch literal 31270 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

1s6SsVH`g1( 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 Pe + + + + SchemeUserState + + JSON Encoding.xcscheme + + orderHint + 0 + + + + diff --git a/JSON Encoding/AppDelegate.swift b/JSON Encoding/AppDelegate.swift new file mode 100644 index 0000000..901ec45 --- /dev/null +++ b/JSON Encoding/AppDelegate.swift @@ -0,0 +1,46 @@ +// +// AppDelegate.swift +// JSON Encoding +// +// Created by Rick Wolter on 10/11/18. +// Copyright © 2018 RNWolter. 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/JSON Encoding/Assets.xcassets/AppIcon.appiconset/Contents.json b/JSON Encoding/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..d8db8d6 --- /dev/null +++ b/JSON Encoding/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/JSON Encoding/Assets.xcassets/Contents.json b/JSON Encoding/Assets.xcassets/Contents.json new file mode 100644 index 0000000..da4a164 --- /dev/null +++ b/JSON Encoding/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/JSON Encoding/Base.lproj/LaunchScreen.storyboard b/JSON Encoding/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..bfa3612 --- /dev/null +++ b/JSON Encoding/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/JSON Encoding/Base.lproj/Main.storyboard b/JSON Encoding/Base.lproj/Main.storyboard new file mode 100644 index 0000000..d136bc1 --- /dev/null +++ b/JSON Encoding/Base.lproj/Main.storyboard @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/JSON Encoding/Info.plist b/JSON Encoding/Info.plist new file mode 100644 index 0000000..16be3b6 --- /dev/null +++ b/JSON Encoding/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/JSON Encoding/Model/Student.swift b/JSON Encoding/Model/Student.swift new file mode 100644 index 0000000..e237cfb --- /dev/null +++ b/JSON Encoding/Model/Student.swift @@ -0,0 +1,41 @@ +// +// Student.swift +// JSON Encoding +// +// Created by Rick Wolter on 10/11/18. +// Copyright © 2018 RNWolter. All rights reserved. +// + +import Foundation + +struct Student: CustomStringConvertible, Codable { + + let name: String + let cohort: String? + let age: Int? +// +// init(name: String,cohort: String? = nil, age: Int){ +// self.name = name +// self.cohort = cohort +// self.age = age +// } + +// var description: String { +// let studentDescription = "\(name), Cohort: \(cohort ?? "unknown cohort"), \(age) years old" +// return studentDescription +// } + var description: String { + var studentDescription = name + + if let age = age { + studentDescription += ", aged " + String(age) + + } + + if let cohort = cohort { + studentDescription += ", cohort " + String(cohort) + } + return studentDescription + } + +} diff --git a/JSON Encoding/Model/StudentManager.swift b/JSON Encoding/Model/StudentManager.swift new file mode 100644 index 0000000..da43c7e --- /dev/null +++ b/JSON Encoding/Model/StudentManager.swift @@ -0,0 +1,45 @@ +// +// StudentManager.swift +// JSON Encoding +// +// Created by Rick Wolter on 10/11/18. +// Copyright © 2018 RNWolter. All rights reserved. +// + +import Foundation + +class StudentManager: NSObject { + + + var students = [Student]() + + + let url = URL(fileURLWithPath: NSHomeDirectory()) + .appendingPathComponent("Documents") + .appendingPathComponent("students.json") + + func writeToFile() { + + do { + let studentsEncoding = try JSONEncoder().encode(students) + try studentsEncoding.write(to: url) + } catch { + print("Error \(error)") + } + + + + } + + func readFromFile() { + do { + let studentData = try Data(contentsOf: url) + var studentsDecoded = try JSONDecoder().decode([Student].self, from: studentData) + students = studentsDecoded + + } catch { + print("Error: \(error)") + } + +} +} diff --git a/JSON Encoding/ViewController.swift b/JSON Encoding/ViewController.swift new file mode 100644 index 0000000..b573641 --- /dev/null +++ b/JSON Encoding/ViewController.swift @@ -0,0 +1,54 @@ +// +// ViewController.swift +// JSON Encoding +// +// Created by Rick Wolter on 10/11/18. +// Copyright © 2018 RNWolter. All rights reserved. +// + +import UIKit + +class ViewController: UIViewController { + + var studentManager = StudentManager() + + @IBOutlet weak var nameTextField: UITextField! + @IBOutlet weak var ageTextField: UITextField! + @IBOutlet weak var cohortTextField: UITextField! + + + override func viewWillAppear(_ animated: Bool) { + studentManager.readFromFile() + + } + override func viewDidLoad() { + super.viewDidLoad() + + } + + + + + @IBAction func print(_ sender: Any) { + + for i in studentManager.students { + print(i) + } + } + + @IBAction func save(_ sender: Any) { + guard let name = nameTextField.text, + let ageString = ageTextField.text, + let cohort = cohortTextField.text, + let age = Int(ageString) else {return} + + let student = Student(name: name, cohort: cohort, age: age) + studentManager.students.append(student) + studentManager.writeToFile() + + nameTextField.text = "" + ageTextField.text = "" + cohortTextField.text = "" + } +} + From 3366096b7a15441df7366346fef57cd3f1fbf174 Mon Sep 17 00:00:00 2001 From: Rwoltx Date: Fri, 12 Oct 2018 07:47:33 -0400 Subject: [PATCH 2/2] Fixed the performance issue. --- .../UserInterfaceState.xcuserstate | Bin 31270 -> 31902 bytes JSON Encoding/Base.lproj/Main.storyboard | 2 +- JSON Encoding/ViewController.swift | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/JSON Encoding.xcodeproj/project.xcworkspace/xcuserdata/RickWolter.xcuserdatad/UserInterfaceState.xcuserstate b/JSON Encoding.xcodeproj/project.xcworkspace/xcuserdata/RickWolter.xcuserdatad/UserInterfaceState.xcuserstate index 51eb0bb0a9d5120c3c15f87eea50c4ddcfc9eebd..f94e02a88150ee0067543c69641faa351548e0b4 100644 GIT binary patch delta 14796 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 delta 13960 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 - +