From fccd8ab29c920e68dc024fcb31b94c997d63e788 Mon Sep 17 00:00:00 2001 From: Najla Talal Date: Wed, 22 Dec 2021 22:47:44 +0300 Subject: [PATCH] Najla Alharbi --- .../HwNetworking.xcodeproj/project.pbxproj | 369 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../UserInterfaceState.xcuserstate | Bin 0 -> 24587 bytes .../xcschemes/xcschememanagement.plist | 14 + HwNetworking/HwNetworking/AppDelegate.swift | 36 ++ .../AccentColor.colorset/Contents.json | 11 + .../AppIcon.appiconset/Contents.json | 98 +++++ .../Assets.xcassets/Contents.json | 6 + .../Base.lproj/LaunchScreen.storyboard | 25 ++ .../HwNetworking/Base.lproj/Main.storyboard | 88 +++++ HwNetworking/HwNetworking/Info.plist | 25 ++ HwNetworking/HwNetworking/SceneDelegate.swift | 52 +++ HwNetworking/HwNetworking/Structs.swift | 41 ++ .../HwNetworking/ViewController.swift | 134 +++++++ HwNetworking/HwNetworking/myCell.swift | 25 ++ 16 files changed, 939 insertions(+) create mode 100644 HwNetworking/HwNetworking.xcodeproj/project.pbxproj create mode 100644 HwNetworking/HwNetworking.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 HwNetworking/HwNetworking.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 HwNetworking/HwNetworking.xcodeproj/project.xcworkspace/xcuserdata/najlatalal.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 HwNetworking/HwNetworking.xcodeproj/xcuserdata/najlatalal.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 HwNetworking/HwNetworking/AppDelegate.swift create mode 100644 HwNetworking/HwNetworking/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 HwNetworking/HwNetworking/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 HwNetworking/HwNetworking/Assets.xcassets/Contents.json create mode 100644 HwNetworking/HwNetworking/Base.lproj/LaunchScreen.storyboard create mode 100644 HwNetworking/HwNetworking/Base.lproj/Main.storyboard create mode 100644 HwNetworking/HwNetworking/Info.plist create mode 100644 HwNetworking/HwNetworking/SceneDelegate.swift create mode 100644 HwNetworking/HwNetworking/Structs.swift create mode 100644 HwNetworking/HwNetworking/ViewController.swift create mode 100644 HwNetworking/HwNetworking/myCell.swift diff --git a/HwNetworking/HwNetworking.xcodeproj/project.pbxproj b/HwNetworking/HwNetworking.xcodeproj/project.pbxproj new file mode 100644 index 0000000..d9a323a --- /dev/null +++ b/HwNetworking/HwNetworking.xcodeproj/project.pbxproj @@ -0,0 +1,369 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 55; + objects = { + +/* Begin PBXBuildFile section */ + B3D4B5B52773A72C0019277D /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3D4B5B42773A72C0019277D /* AppDelegate.swift */; }; + B3D4B5B72773A72C0019277D /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3D4B5B62773A72C0019277D /* SceneDelegate.swift */; }; + B3D4B5B92773A72C0019277D /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3D4B5B82773A72C0019277D /* ViewController.swift */; }; + B3D4B5BC2773A72C0019277D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B3D4B5BA2773A72C0019277D /* Main.storyboard */; }; + B3D4B5BE2773A72C0019277D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B3D4B5BD2773A72C0019277D /* Assets.xcassets */; }; + B3D4B5C12773A72C0019277D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B3D4B5BF2773A72C0019277D /* LaunchScreen.storyboard */; }; + B3D4B5C92773A7AB0019277D /* myCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3D4B5C82773A7AB0019277D /* myCell.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + B3D4B5B12773A72C0019277D /* HwNetworking.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = HwNetworking.app; sourceTree = BUILT_PRODUCTS_DIR; }; + B3D4B5B42773A72C0019277D /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + B3D4B5B62773A72C0019277D /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + B3D4B5B82773A72C0019277D /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + B3D4B5BB2773A72C0019277D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + B3D4B5BD2773A72C0019277D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + B3D4B5C02773A72C0019277D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + B3D4B5C22773A72C0019277D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B3D4B5C82773A7AB0019277D /* myCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = myCell.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + B3D4B5AE2773A72C0019277D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + B3D4B5A82773A72C0019277D = { + isa = PBXGroup; + children = ( + B3D4B5B32773A72C0019277D /* HwNetworking */, + B3D4B5B22773A72C0019277D /* Products */, + ); + sourceTree = ""; + }; + B3D4B5B22773A72C0019277D /* Products */ = { + isa = PBXGroup; + children = ( + B3D4B5B12773A72C0019277D /* HwNetworking.app */, + ); + name = Products; + sourceTree = ""; + }; + B3D4B5B32773A72C0019277D /* HwNetworking */ = { + isa = PBXGroup; + children = ( + B3D4B5B42773A72C0019277D /* AppDelegate.swift */, + B3D4B5B62773A72C0019277D /* SceneDelegate.swift */, + B3D4B5B82773A72C0019277D /* ViewController.swift */, + B3D4B5C82773A7AB0019277D /* myCell.swift */, + B3D4B5BA2773A72C0019277D /* Main.storyboard */, + B3D4B5BD2773A72C0019277D /* Assets.xcassets */, + B3D4B5BF2773A72C0019277D /* LaunchScreen.storyboard */, + B3D4B5C22773A72C0019277D /* Info.plist */, + ); + path = HwNetworking; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + B3D4B5B02773A72C0019277D /* HwNetworking */ = { + isa = PBXNativeTarget; + buildConfigurationList = B3D4B5C52773A72C0019277D /* Build configuration list for PBXNativeTarget "HwNetworking" */; + buildPhases = ( + B3D4B5AD2773A72C0019277D /* Sources */, + B3D4B5AE2773A72C0019277D /* Frameworks */, + B3D4B5AF2773A72C0019277D /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = HwNetworking; + productName = HwNetworking; + productReference = B3D4B5B12773A72C0019277D /* HwNetworking.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + B3D4B5A92773A72C0019277D /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1310; + LastUpgradeCheck = 1310; + TargetAttributes = { + B3D4B5B02773A72C0019277D = { + CreatedOnToolsVersion = 13.1; + }; + }; + }; + buildConfigurationList = B3D4B5AC2773A72C0019277D /* Build configuration list for PBXProject "HwNetworking" */; + compatibilityVersion = "Xcode 13.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = B3D4B5A82773A72C0019277D; + productRefGroup = B3D4B5B22773A72C0019277D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + B3D4B5B02773A72C0019277D /* HwNetworking */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + B3D4B5AF2773A72C0019277D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3D4B5C12773A72C0019277D /* LaunchScreen.storyboard in Resources */, + B3D4B5BE2773A72C0019277D /* Assets.xcassets in Resources */, + B3D4B5BC2773A72C0019277D /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + B3D4B5AD2773A72C0019277D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3D4B5B92773A72C0019277D /* ViewController.swift in Sources */, + B3D4B5C92773A7AB0019277D /* myCell.swift in Sources */, + B3D4B5B52773A72C0019277D /* AppDelegate.swift in Sources */, + B3D4B5B72773A72C0019277D /* SceneDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + B3D4B5BA2773A72C0019277D /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + B3D4B5BB2773A72C0019277D /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + B3D4B5BF2773A72C0019277D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + B3D4B5C02773A72C0019277D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + B3D4B5C32773A72C0019277D /* 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++17"; + 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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + 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; + 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 = 15.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; + }; + B3D4B5C42773A72C0019277D /* 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++17"; + 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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + 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; + 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 = 15.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; + }; + B3D4B5C62773A72C0019277D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 8LDQAJBSC7; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = HwNetworking/Info.plist; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.demoapp.HwNetworking; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + B3D4B5C72773A72C0019277D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 8LDQAJBSC7; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = HwNetworking/Info.plist; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.demoapp.HwNetworking; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + B3D4B5AC2773A72C0019277D /* Build configuration list for PBXProject "HwNetworking" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3D4B5C32773A72C0019277D /* Debug */, + B3D4B5C42773A72C0019277D /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B3D4B5C52773A72C0019277D /* Build configuration list for PBXNativeTarget "HwNetworking" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B3D4B5C62773A72C0019277D /* Debug */, + B3D4B5C72773A72C0019277D /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = B3D4B5A92773A72C0019277D /* Project object */; +} diff --git a/HwNetworking/HwNetworking.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/HwNetworking/HwNetworking.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/HwNetworking/HwNetworking.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/HwNetworking/HwNetworking.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/HwNetworking/HwNetworking.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/HwNetworking/HwNetworking.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/HwNetworking/HwNetworking.xcodeproj/project.xcworkspace/xcuserdata/najlatalal.xcuserdatad/UserInterfaceState.xcuserstate b/HwNetworking/HwNetworking.xcodeproj/project.xcworkspace/xcuserdata/najlatalal.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..569b970cbbf91788dd1e47b74eccdc25880c0e5c GIT binary patch literal 24587 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 literal 0 HcmV?d00001 diff --git a/HwNetworking/HwNetworking.xcodeproj/xcuserdata/najlatalal.xcuserdatad/xcschemes/xcschememanagement.plist b/HwNetworking/HwNetworking.xcodeproj/xcuserdata/najlatalal.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..64e78cc --- /dev/null +++ b/HwNetworking/HwNetworking.xcodeproj/xcuserdata/najlatalal.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + HwNetworking.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/HwNetworking/HwNetworking/AppDelegate.swift b/HwNetworking/HwNetworking/AppDelegate.swift new file mode 100644 index 0000000..c165085 --- /dev/null +++ b/HwNetworking/HwNetworking/AppDelegate.swift @@ -0,0 +1,36 @@ +// +// AppDelegate.swift +// HwNetworking +// +// Created by Najla Talal on 12/22/21. +// + +import UIKit + +@main +class AppDelegate: UIResponder, UIApplicationDelegate { + + + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + // Override point for customization after application launch. + return true + } + + // MARK: UISceneSession Lifecycle + + func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { + // Called when a new scene session is being created. + // Use this method to select a configuration to create the new scene with. + return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) + } + + func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) { + // Called when the user discards a scene session. + // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. + // Use this method to release any resources that were specific to the discarded scenes, as they will not return. + } + + +} + diff --git a/HwNetworking/HwNetworking/Assets.xcassets/AccentColor.colorset/Contents.json b/HwNetworking/HwNetworking/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/HwNetworking/HwNetworking/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/HwNetworking/HwNetworking/Assets.xcassets/AppIcon.appiconset/Contents.json b/HwNetworking/HwNetworking/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..9221b9b --- /dev/null +++ b/HwNetworking/HwNetworking/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,98 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "83.5x83.5" + }, + { + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/HwNetworking/HwNetworking/Assets.xcassets/Contents.json b/HwNetworking/HwNetworking/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/HwNetworking/HwNetworking/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/HwNetworking/HwNetworking/Base.lproj/LaunchScreen.storyboard b/HwNetworking/HwNetworking/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..865e932 --- /dev/null +++ b/HwNetworking/HwNetworking/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/HwNetworking/HwNetworking/Base.lproj/Main.storyboard b/HwNetworking/HwNetworking/Base.lproj/Main.storyboard new file mode 100644 index 0000000..d2919d3 --- /dev/null +++ b/HwNetworking/HwNetworking/Base.lproj/Main.storyboard @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/HwNetworking/HwNetworking/Info.plist b/HwNetworking/HwNetworking/Info.plist new file mode 100644 index 0000000..dd3c9af --- /dev/null +++ b/HwNetworking/HwNetworking/Info.plist @@ -0,0 +1,25 @@ + + + + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + $(PRODUCT_MODULE_NAME).SceneDelegate + UISceneStoryboardFile + Main + + + + + + diff --git a/HwNetworking/HwNetworking/SceneDelegate.swift b/HwNetworking/HwNetworking/SceneDelegate.swift new file mode 100644 index 0000000..6e68308 --- /dev/null +++ b/HwNetworking/HwNetworking/SceneDelegate.swift @@ -0,0 +1,52 @@ +// +// SceneDelegate.swift +// HwNetworking +// +// Created by Najla Talal on 12/22/21. +// + +import UIKit + +class SceneDelegate: UIResponder, UIWindowSceneDelegate { + + var window: UIWindow? + + + func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { + // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. + // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. + // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). + guard let _ = (scene as? UIWindowScene) else { return } + } + + func sceneDidDisconnect(_ scene: UIScene) { + // Called as the scene is being released by the system. + // This occurs shortly after the scene enters the background, or when its session is discarded. + // Release any resources associated with this scene that can be re-created the next time the scene connects. + // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead). + } + + func sceneDidBecomeActive(_ scene: UIScene) { + // Called when the scene has moved from an inactive state to an active state. + // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. + } + + func sceneWillResignActive(_ scene: UIScene) { + // Called when the scene will move from an active state to an inactive state. + // This may occur due to temporary interruptions (ex. an incoming phone call). + } + + func sceneWillEnterForeground(_ scene: UIScene) { + // Called as the scene transitions from the background to the foreground. + // Use this method to undo the changes made on entering the background. + } + + func sceneDidEnterBackground(_ scene: UIScene) { + // Called as the scene transitions from the foreground to the background. + // Use this method to save data, release shared resources, and store enough scene-specific state information + // to restore the scene back to its current state. + } + + +} + diff --git a/HwNetworking/HwNetworking/Structs.swift b/HwNetworking/HwNetworking/Structs.swift new file mode 100644 index 0000000..8ca4ecf --- /dev/null +++ b/HwNetworking/HwNetworking/Structs.swift @@ -0,0 +1,41 @@ +// +// Structs.swift +// HwNetworking +// +// Created by Najla Talal on 12/22/21. +// + +import UIKit + +class Structs: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + } + + struct DataModel : Codable { + var title : String + var items : [Item] + + } + + struct details { + + var image : UIImage + var titel : String + } + struct Item : Codable { + var media : Media + var title : String + } + + + struct Media : Codable { + var m : String + } + + + +} diff --git a/HwNetworking/HwNetworking/ViewController.swift b/HwNetworking/HwNetworking/ViewController.swift new file mode 100644 index 0000000..82f12bd --- /dev/null +++ b/HwNetworking/HwNetworking/ViewController.swift @@ -0,0 +1,134 @@ +// +// ViewController.swift +// HwNetworking +// +// Created by Najla Talal on 12/22/21. +// + +import UIKit + +class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { + + var arrImage = [details]() + @IBOutlet weak var tableview: UITableView! + + override func viewDidLoad() { + super.viewDidLoad() + tableview.delegate = self + tableview.dataSource = self + fetchImage() + + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! myCell + cell.title.text = arrImage[indexPath.row].titel + cell.myImage.image = arrImage[indexPath.row].image + return cell + + } + + + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return arrImage.count + + } + + + func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { + + return 300 + + } + + + func fetchImage() { + + let url = URL(string: "https://api.flickr.com/services/feeds/photos_public.gne?format=json&tags=flower&nojsoncallback=1#") + let session = URLSession.shared + let task = session.dataTask(with: url!) { data , respone, error in + guard let data = data else { + return + } + do { + + let decoder = JSONDecoder() + let decoderData = try decoder.decode(DataModel.self, from:data) + decoderData.items.forEach({ element in + let name = element.media.m + print(name) + let titel = element.title + let image = self.getImage(from: name) + self.arrImage.append(details(image: image! , titel: titel )) + + + + + }) + + DispatchQueue.main.async { + self.tableview.reloadData() + } + + + } catch { + print(error.localizedDescription) + } + } + task.resume() + + } + + func getImage(from string: String) -> UIImage? { + + guard let url = URL(string: string) + else { + print("Unable to create URL") + return nil + } + + var image: UIImage? = nil + do { + + let data = try Data(contentsOf: url, options: []) + + + image = UIImage(data: data) + } + catch { + print(error.localizedDescription) + } + + return image + } + + + +} + + + +struct DataModel : Codable { + var title : String + var items : [Item] + +} + +struct details { + + var image : UIImage + var titel : String +} +struct Item : Codable { + var media : Media + var title : String +} + + +struct Media : Codable { + var m : String +} + + + + diff --git a/HwNetworking/HwNetworking/myCell.swift b/HwNetworking/HwNetworking/myCell.swift new file mode 100644 index 0000000..bf649b8 --- /dev/null +++ b/HwNetworking/HwNetworking/myCell.swift @@ -0,0 +1,25 @@ +// +// myCell.swift +// HwNetworking +// +// Created by Najla Talal on 12/22/21. +// + +import UIKit + +class myCell: UITableViewCell { + + @IBOutlet weak var myImage: UIImageView! + @IBOutlet weak var title: UILabel! + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + } + + override func setSelected(_ selected: Bool, animated: Bool) { + super.setSelected(selected, animated: animated) + + // Configure the view for the selected state + } + +}