From e018c3e1bdd5e26c48f900290cc63ce73e2bb0b2 Mon Sep 17 00:00:00 2001 From: Vandad Nahavandipoor Date: Mon, 22 Jun 2015 18:22:07 +0200 Subject: [PATCH] Updated all example codes in chapter-fileManagement to Swift 2.0 (Xcode 7) --- .../project.pbxproj | 10 +- .../UserInterfaceState.xcuserstate | Bin 0 -> 12040 bytes .../Creating Folders on Disk.xcscheme | 11 +- .../AppDelegate.swift | 27 ++- .../Creating Folders on Disk/Info.plist | 2 +- .../Creating Folders on DiskTests/Info.plist | 2 +- .../project.pbxproj | 10 +- .../UserInterfaceState.xcuserstate | Bin 0 -> 12827 bytes .../Deleting Files and Folders.xcscheme | 11 +- .../AppDelegate.swift | 79 ++++---- .../Deleting Files and Folders/Info.plist | 2 +- .../Info.plist | 2 +- .../project.pbxproj | 10 +- .../UserInterfaceState.xcuserstate | Bin 0 -> 13517 bytes .../Enumerating Files and Folders.xcscheme | 11 +- .../AppDelegate.swift | 169 ++++++++---------- .../AppIcon.appiconset/Contents.json | 5 + .../Enumerating Files and Folders/Info.plist | 2 +- .../Info.plist | 2 +- .../project.pbxproj | 10 +- .../UserInterfaceState.xcuserstate | Bin 0 -> 13093 bytes ...f the Most Useful Folders on Disk.xcscheme | 11 +- .../AppDelegate.swift | 34 ++-- .../Info.plist | 2 +- .../Info.plist | 2 +- .../project.pbxproj | 10 +- .../UserInterfaceState.xcuserstate | Bin 0 -> 19160 bytes .../Saving Objects to Files.xcscheme | 11 +- .../Saving Objects to Files/AppDelegate.swift | 10 +- .../AppIcon.appiconset/Contents.json | 5 + .../Saving Objects to Files/Info.plist | 2 +- .../Saving Objects to FilesTests/Info.plist | 2 +- .../project.pbxproj | 10 +- .../UserInterfaceState.xcuserstate | Bin 0 -> 12463 bytes ...Writing to and Reading from Files.xcscheme | 11 +- .../AppDelegate.swift | 61 +++---- .../Info.plist | 2 +- .../Info.plist | 2 +- 38 files changed, 290 insertions(+), 250 deletions(-) create mode 100644 chapter-fileManagement/Creating Folders on Disk/Creating Folders on Disk.xcodeproj/project.xcworkspace/xcuserdata/vandadnp.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 chapter-fileManagement/Deleting Files and Folders/Deleting Files and Folders.xcodeproj/project.xcworkspace/xcuserdata/vandadnp.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 chapter-fileManagement/Enumerating Files and Folders/Enumerating Files and Folders.xcodeproj/project.xcworkspace/xcuserdata/vandadnp.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 chapter-fileManagement/Finding the Path of the Most Useful Folders on Disk/Finding the Path of the Most Useful Folders on Disk.xcodeproj/project.xcworkspace/xcuserdata/vandadnp.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 chapter-fileManagement/Saving Objects to Files/Saving Objects to Files.xcodeproj/project.xcworkspace/xcuserdata/vandadnp.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 chapter-fileManagement/Writing to and Reading from Files/Writing to and Reading from Files.xcodeproj/project.xcworkspace/xcuserdata/vandadnp.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/chapter-fileManagement/Creating Folders on Disk/Creating Folders on Disk.xcodeproj/project.pbxproj b/chapter-fileManagement/Creating Folders on Disk/Creating Folders on Disk.xcodeproj/project.pbxproj index e1a3a1f..9b4a988 100644 --- a/chapter-fileManagement/Creating Folders on Disk/Creating Folders on Disk.xcodeproj/project.pbxproj +++ b/chapter-fileManagement/Creating Folders on Disk/Creating Folders on Disk.xcodeproj/project.pbxproj @@ -147,7 +147,8 @@ 9D1CE3381958040A0068FE3B /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0600; + LastSwiftUpdateCheck = 0700; + LastUpgradeCheck = 0700; ORGANIZATIONNAME = "Pixolity Ltd."; TargetAttributes = { 9D1CE33F1958040A0068FE3B = { @@ -243,6 +244,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; @@ -309,6 +311,7 @@ ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; INFOPLIST_FILE = "Creating Folders on Disk/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.pixolity.ios.cookbook.app; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; @@ -320,6 +323,7 @@ ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; INFOPLIST_FILE = "Creating Folders on Disk/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.pixolity.ios.cookbook.app; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; @@ -339,6 +343,7 @@ INFOPLIST_FILE = "Creating Folders on DiskTests/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; METAL_ENABLE_DEBUG_INFO = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.pixolity.ios.cookbook.app; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUNDLE_LOADER)"; }; @@ -355,6 +360,7 @@ INFOPLIST_FILE = "Creating Folders on DiskTests/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; METAL_ENABLE_DEBUG_INFO = NO; + PRODUCT_BUNDLE_IDENTIFIER = com.pixolity.ios.cookbook.app; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUNDLE_LOADER)"; }; @@ -379,6 +385,7 @@ 9D1CE3591958040A0068FE3B /* Release */, ); defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; }; 9D1CE35A1958040A0068FE3B /* Build configuration list for PBXNativeTarget "Creating Folders on DiskTests" */ = { isa = XCConfigurationList; @@ -387,6 +394,7 @@ 9D1CE35C1958040A0068FE3B /* Release */, ); defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; diff --git a/chapter-fileManagement/Creating Folders on Disk/Creating Folders on Disk.xcodeproj/project.xcworkspace/xcuserdata/vandadnp.xcuserdatad/UserInterfaceState.xcuserstate b/chapter-fileManagement/Creating Folders on Disk/Creating Folders on Disk.xcodeproj/project.xcworkspace/xcuserdata/vandadnp.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..8a53d04a782bc612ad9e4200192f6715c27b27ba GIT binary patch literal 12040 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 WYolo+BGCWl|LEu9d+fEd?*9NkEb`m{ literal 0 HcmV?d00001 diff --git a/chapter-fileManagement/Creating Folders on Disk/Creating Folders on Disk.xcodeproj/xcuserdata/vandadnp.xcuserdatad/xcschemes/Creating Folders on Disk.xcscheme b/chapter-fileManagement/Creating Folders on Disk/Creating Folders on Disk.xcodeproj/xcuserdata/vandadnp.xcuserdatad/xcschemes/Creating Folders on Disk.xcscheme index ab738b4..957c73d 100644 --- a/chapter-fileManagement/Creating Folders on Disk/Creating Folders on Disk.xcodeproj/xcuserdata/vandadnp.xcuserdatad/xcschemes/Creating Folders on Disk.xcscheme +++ b/chapter-fileManagement/Creating Folders on Disk/Creating Folders on Disk.xcodeproj/xcuserdata/vandadnp.xcuserdatad/xcschemes/Creating Folders on Disk.xcscheme @@ -1,6 +1,6 @@ + + - + - + Bool { diff --git a/chapter-fileManagement/Creating Folders on Disk/Creating Folders on Disk/Info.plist b/chapter-fileManagement/Creating Folders on Disk/Creating Folders on Disk/Info.plist index b4d27ff..0e5da27 100644 --- a/chapter-fileManagement/Creating Folders on Disk/Creating Folders on Disk/Info.plist +++ b/chapter-fileManagement/Creating Folders on Disk/Creating Folders on Disk/Info.plist @@ -7,7 +7,7 @@ CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier - com.pixolity.ios.cookbook.app + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/chapter-fileManagement/Creating Folders on Disk/Creating Folders on DiskTests/Info.plist b/chapter-fileManagement/Creating Folders on Disk/Creating Folders on DiskTests/Info.plist index de2a57c..6d32c15 100644 --- a/chapter-fileManagement/Creating Folders on Disk/Creating Folders on DiskTests/Info.plist +++ b/chapter-fileManagement/Creating Folders on Disk/Creating Folders on DiskTests/Info.plist @@ -7,7 +7,7 @@ CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier - com.pixolity.ios.cookbook.app + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/chapter-fileManagement/Deleting Files and Folders/Deleting Files and Folders.xcodeproj/project.pbxproj b/chapter-fileManagement/Deleting Files and Folders/Deleting Files and Folders.xcodeproj/project.pbxproj index 9e08926..353feac 100644 --- a/chapter-fileManagement/Deleting Files and Folders/Deleting Files and Folders.xcodeproj/project.pbxproj +++ b/chapter-fileManagement/Deleting Files and Folders/Deleting Files and Folders.xcodeproj/project.pbxproj @@ -147,7 +147,8 @@ 9DAD55EB19581626009F9E4F /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0600; + LastSwiftUpdateCheck = 0700; + LastUpgradeCheck = 0700; ORGANIZATIONNAME = "Pixolity Ltd."; TargetAttributes = { 9DAD55F219581626009F9E4F = { @@ -243,6 +244,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; @@ -309,6 +311,7 @@ ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; INFOPLIST_FILE = "Deleting Files and Folders/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.pixolity.ios.cookbook.app; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; @@ -320,6 +323,7 @@ ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; INFOPLIST_FILE = "Deleting Files and Folders/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.pixolity.ios.cookbook.app; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; @@ -339,6 +343,7 @@ INFOPLIST_FILE = "Deleting Files and FoldersTests/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; METAL_ENABLE_DEBUG_INFO = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.pixolity.ios.cookbook.app; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUNDLE_LOADER)"; }; @@ -355,6 +360,7 @@ INFOPLIST_FILE = "Deleting Files and FoldersTests/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; METAL_ENABLE_DEBUG_INFO = NO; + PRODUCT_BUNDLE_IDENTIFIER = com.pixolity.ios.cookbook.app; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUNDLE_LOADER)"; }; @@ -379,6 +385,7 @@ 9DAD560C19581626009F9E4F /* Release */, ); defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; }; 9DAD560D19581626009F9E4F /* Build configuration list for PBXNativeTarget "Deleting Files and FoldersTests" */ = { isa = XCConfigurationList; @@ -387,6 +394,7 @@ 9DAD560F19581626009F9E4F /* Release */, ); defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; diff --git a/chapter-fileManagement/Deleting Files and Folders/Deleting Files and Folders.xcodeproj/project.xcworkspace/xcuserdata/vandadnp.xcuserdatad/UserInterfaceState.xcuserstate b/chapter-fileManagement/Deleting Files and Folders/Deleting Files and Folders.xcodeproj/project.xcworkspace/xcuserdata/vandadnp.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..c1456733426fe6c84bc9914ce62f9a70c3d6a688 GIT binary patch literal 12827 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 + + - + - + CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier - com.pixolity.ios.cookbook.app + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/chapter-fileManagement/Deleting Files and Folders/Deleting Files and FoldersTests/Info.plist b/chapter-fileManagement/Deleting Files and Folders/Deleting Files and FoldersTests/Info.plist index de2a57c..6d32c15 100644 --- a/chapter-fileManagement/Deleting Files and Folders/Deleting Files and FoldersTests/Info.plist +++ b/chapter-fileManagement/Deleting Files and Folders/Deleting Files and FoldersTests/Info.plist @@ -7,7 +7,7 @@ CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier - com.pixolity.ios.cookbook.app + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/chapter-fileManagement/Enumerating Files and Folders/Enumerating Files and Folders.xcodeproj/project.pbxproj b/chapter-fileManagement/Enumerating Files and Folders/Enumerating Files and Folders.xcodeproj/project.pbxproj index 3728141..5819d19 100644 --- a/chapter-fileManagement/Enumerating Files and Folders/Enumerating Files and Folders.xcodeproj/project.pbxproj +++ b/chapter-fileManagement/Enumerating Files and Folders/Enumerating Files and Folders.xcodeproj/project.pbxproj @@ -147,7 +147,8 @@ 9D1CE35E195806360068FE3B /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0600; + LastSwiftUpdateCheck = 0700; + LastUpgradeCheck = 0700; ORGANIZATIONNAME = "Pixolity Ltd."; TargetAttributes = { 9D1CE365195806360068FE3B = { @@ -243,6 +244,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; @@ -309,6 +311,7 @@ ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; INFOPLIST_FILE = "Enumerating Files and Folders/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.pixolity.ios.cookbook.app; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; @@ -320,6 +323,7 @@ ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; INFOPLIST_FILE = "Enumerating Files and Folders/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.pixolity.ios.cookbook.app; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; @@ -339,6 +343,7 @@ INFOPLIST_FILE = "Enumerating Files and FoldersTests/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; METAL_ENABLE_DEBUG_INFO = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.pixolity.ios.cookbook.app; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUNDLE_LOADER)"; }; @@ -355,6 +360,7 @@ INFOPLIST_FILE = "Enumerating Files and FoldersTests/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; METAL_ENABLE_DEBUG_INFO = NO; + PRODUCT_BUNDLE_IDENTIFIER = com.pixolity.ios.cookbook.app; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUNDLE_LOADER)"; }; @@ -379,6 +385,7 @@ 9D1CE37F195806360068FE3B /* Release */, ); defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; }; 9D1CE380195806360068FE3B /* Build configuration list for PBXNativeTarget "Enumerating Files and FoldersTests" */ = { isa = XCConfigurationList; @@ -387,6 +394,7 @@ 9D1CE382195806360068FE3B /* Release */, ); defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; diff --git a/chapter-fileManagement/Enumerating Files and Folders/Enumerating Files and Folders.xcodeproj/project.xcworkspace/xcuserdata/vandadnp.xcuserdatad/UserInterfaceState.xcuserstate b/chapter-fileManagement/Enumerating Files and Folders/Enumerating Files and Folders.xcodeproj/project.xcworkspace/xcuserdata/vandadnp.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..f70b13677dcb6afc2fcb04d5019c26ebcf5aa4e2 GIT binary patch literal 13517 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 b#ig0ja?%RYF7Cs{MEv9mf?zR9yX5}>2>tq@ literal 0 HcmV?d00001 diff --git a/chapter-fileManagement/Enumerating Files and Folders/Enumerating Files and Folders.xcodeproj/xcuserdata/vandadnp.xcuserdatad/xcschemes/Enumerating Files and Folders.xcscheme b/chapter-fileManagement/Enumerating Files and Folders/Enumerating Files and Folders.xcodeproj/xcuserdata/vandadnp.xcuserdatad/xcschemes/Enumerating Files and Folders.xcscheme index 2dd0661..87c3080 100644 --- a/chapter-fileManagement/Enumerating Files and Folders/Enumerating Files and Folders.xcodeproj/xcuserdata/vandadnp.xcuserdatad/xcschemes/Enumerating Files and Folders.xcscheme +++ b/chapter-fileManagement/Enumerating Files and Folders/Enumerating Files and Folders.xcodeproj/xcuserdata/vandadnp.xcuserdatad/xcschemes/Enumerating Files and Folders.xcscheme @@ -1,6 +1,6 @@ + + - + - + Bool { -// -// var error:NSError? -// let fileManager = NSFileManager() -// let bundleDir = NSBundle.mainBundle().bundlePath -// let bundleContents = fileManager.contentsOfDirectoryAtPath(bundleDir, -// error: &error)! -// -// if let contents = bundleContents{ -// if contents.count == 0{ -// println("The app bundle is empty!") -// } else { -// println("The app bundle contents = \(bundleContents)") +// +// let fileManager = NSFileManager() +// let bundleDir = NSBundle.mainBundle().bundlePath +// +// do{ +// let bundleContents = try fileManager.contentsOfDirectoryAtPath(bundleDir) +// if bundleContents.count == 0{ +// print("The app bundle is empty!") +// } else { +// print("The app bundle contents = \(bundleContents)") +// } +// } catch let error as NSError{ +// print("Could not read the contents. Error = \(error)") // } -// } else if let theError = error { -// println("Could not read the contents. Error = \(theError)") -// } -// -// self.window = UIWindow(frame: UIScreen.mainScreen().bounds) -// // Override point for customization after application launch. -// self.window!.backgroundColor = UIColor.whiteColor() -// self.window!.makeKeyAndVisible() -// return true +// +// self.window = UIWindow(frame: UIScreen.mainScreen().bounds) +// // Override point for customization after application launch. +// self.window!.backgroundColor = UIColor.whiteColor() +// self.window!.makeKeyAndVisible() +// return true // } -// +// //} - -/* 2 */ -// -// AppDelegate.swift -// Enumerating Files and Folders -// -// Created by Vandad Nahavandipoor on 6/23/14. -// Copyright (c) 2014 Pixolity Ltd. All rights reserved. -// -// These example codes are written for O'Reilly's iOS 8 Swift Programming Cookbook -// If you use these solutions in your apps, you can give attribution to -// Vandad Nahavandipoor for his work. Feel free to visit my blog -// at http://vandadnp.wordpress.com for daily tips and tricks in Swift -// and Objective-C and various other programming languages. // -// You can purchase "iOS 8 Swift Programming Cookbook" from -// the following URL: -// http://shop.oreilly.com/product/0636920034254.do -// -// If you have any questions, you can contact me directly -// at vandad.np@gmail.com -// Similarly, if you find an error in these sample codes, simply -// report them to O'Reilly at the following URL: -// http://www.oreilly.com/catalog/errata.csp?isbn=0636920034254 - +///* 2 */ import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { - + var window: UIWindow? - + func contentsOfAppBundle() -> [NSURL]{ - + let propertiesToGet = [ NSURLIsDirectoryKey, NSURLIsReadableKey, @@ -97,89 +72,89 @@ class AppDelegate: UIResponder, UIApplicationDelegate { NSURLContentAccessDateKey, NSURLContentModificationDateKey ] - - var error:NSError? + let fileManager = NSFileManager() let bundleUrl = NSBundle.mainBundle().bundleURL - let result = fileManager.contentsOfDirectoryAtURL(bundleUrl, - includingPropertiesForKeys: propertiesToGet, - options: nil, - error: &error) as! [NSURL] - if let theError = error{ - println("An error occurred") + do{ + let contents = try fileManager.contentsOfDirectoryAtURL(bundleUrl, + includingPropertiesForKeys: propertiesToGet, + options: []) as [NSURL] + return contents + } catch let error as NSError{ + print("An error occurred \(error)") + return [] } - - return result - + } - + func stringValueOfBoolProperty(property: String, url: NSURL) -> String{ var value:AnyObject? - var error:NSError? - if url.getResourceValue( - &value, - forKey: property, - error: &error) && value != nil{ - let number = value as! NSNumber - return number.boolValue ? "YES" : "NO" + + do{ + try url.getResourceValue(&value, forKey: property) + let number = value as! NSNumber + return number.boolValue ? "YES" : "NO" + } catch let error as NSError{ + print(error) } return "NO" } - + func isUrlDirectory(url: NSURL) -> String{ return stringValueOfBoolProperty(NSURLIsDirectoryKey, url: url) } - + func isUrlReadable(url: NSURL) -> NSString{ return stringValueOfBoolProperty(NSURLIsReadableKey, url: url) } - - + + func dateOfType(type: String, url: NSURL) -> NSDate?{ var value:AnyObject? - var error:NSError? - if url.getResourceValue( - &value, - forKey: type, - error: &error) && value != nil{ - return value as? NSDate + + do{ + try url.getResourceValue(&value, forKey: type) + return value as? NSDate + } catch let error as NSError{ + print(error) } + return nil } - + func printUrlPropertiesToConsole(url: NSURL){ - println("URL name = \(url.lastPathComponent)") - println("Is a Directory? \(isUrlDirectory(url))") - println("Is Readable? \(isUrlReadable(url))") - + print("URL name = \(url.lastPathComponent)") + print("Is a Directory? \(isUrlDirectory(url))") + print("Is Readable? \(isUrlReadable(url))") + if let creationDate = dateOfType(NSURLCreationDateKey, url: url){ - println("Creation Date = \(creationDate)") + print("Creation Date = \(creationDate)") } - + if let accessDate = dateOfType(NSURLContentAccessDateKey, url: url){ - println("Access Date = \(accessDate)") + print("Access Date = \(accessDate)") } - + if let modificationDate = dateOfType(NSURLContentModificationDateKey, url: url){ - println("Modification Date = \(modificationDate)") + print("Modification Date = \(modificationDate)") } - - println("-----------------------------------") - + + print("-----------------------------------") + } - + func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool { - + let appBundleContents = contentsOfAppBundle() - + for url in appBundleContents{ printUrlPropertiesToConsole(url) } - + self.window = UIWindow(frame: UIScreen.mainScreen().bounds) // Override point for customization after application launch. self.window!.backgroundColor = UIColor.whiteColor() diff --git a/chapter-fileManagement/Enumerating Files and Folders/Enumerating Files and Folders/Images.xcassets/AppIcon.appiconset/Contents.json b/chapter-fileManagement/Enumerating Files and Folders/Enumerating Files and Folders/Images.xcassets/AppIcon.appiconset/Contents.json index 91bf9c1..b7f3352 100644 --- a/chapter-fileManagement/Enumerating Files and Folders/Enumerating Files and Folders/Images.xcassets/AppIcon.appiconset/Contents.json +++ b/chapter-fileManagement/Enumerating Files and Folders/Enumerating Files and Folders/Images.xcassets/AppIcon.appiconset/Contents.json @@ -15,6 +15,11 @@ "size" : "60x60", "scale" : "2x" }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + }, { "idiom" : "ipad", "size" : "29x29", diff --git a/chapter-fileManagement/Enumerating Files and Folders/Enumerating Files and Folders/Info.plist b/chapter-fileManagement/Enumerating Files and Folders/Enumerating Files and Folders/Info.plist index b4d27ff..0e5da27 100644 --- a/chapter-fileManagement/Enumerating Files and Folders/Enumerating Files and Folders/Info.plist +++ b/chapter-fileManagement/Enumerating Files and Folders/Enumerating Files and Folders/Info.plist @@ -7,7 +7,7 @@ CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier - com.pixolity.ios.cookbook.app + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/chapter-fileManagement/Enumerating Files and Folders/Enumerating Files and FoldersTests/Info.plist b/chapter-fileManagement/Enumerating Files and Folders/Enumerating Files and FoldersTests/Info.plist index de2a57c..6d32c15 100644 --- a/chapter-fileManagement/Enumerating Files and Folders/Enumerating Files and FoldersTests/Info.plist +++ b/chapter-fileManagement/Enumerating Files and Folders/Enumerating Files and FoldersTests/Info.plist @@ -7,7 +7,7 @@ CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier - com.pixolity.ios.cookbook.app + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/chapter-fileManagement/Finding the Path of the Most Useful Folders on Disk/Finding the Path of the Most Useful Folders on Disk.xcodeproj/project.pbxproj b/chapter-fileManagement/Finding the Path of the Most Useful Folders on Disk/Finding the Path of the Most Useful Folders on Disk.xcodeproj/project.pbxproj index a813dfc..8791c39 100644 --- a/chapter-fileManagement/Finding the Path of the Most Useful Folders on Disk/Finding the Path of the Most Useful Folders on Disk.xcodeproj/project.pbxproj +++ b/chapter-fileManagement/Finding the Path of the Most Useful Folders on Disk/Finding the Path of the Most Useful Folders on Disk.xcodeproj/project.pbxproj @@ -147,7 +147,8 @@ 9DC48C1D1954361600DBDB34 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0600; + LastSwiftUpdateCheck = 0700; + LastUpgradeCheck = 0700; ORGANIZATIONNAME = "Pixolity Ltd."; TargetAttributes = { 9DC48C241954361600DBDB34 = { @@ -243,6 +244,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; @@ -309,6 +311,7 @@ ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; INFOPLIST_FILE = "Finding the Path of the Most Useful Folders on Disk/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.pixolity.ios.cookbook.app; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; @@ -320,6 +323,7 @@ ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; INFOPLIST_FILE = "Finding the Path of the Most Useful Folders on Disk/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.pixolity.ios.cookbook.app; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; @@ -339,6 +343,7 @@ INFOPLIST_FILE = "Finding the Path of the Most Useful Folders on DiskTests/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; METAL_ENABLE_DEBUG_INFO = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.pixolity.ios.cookbook.app; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUNDLE_LOADER)"; }; @@ -355,6 +360,7 @@ INFOPLIST_FILE = "Finding the Path of the Most Useful Folders on DiskTests/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; METAL_ENABLE_DEBUG_INFO = NO; + PRODUCT_BUNDLE_IDENTIFIER = com.pixolity.ios.cookbook.app; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUNDLE_LOADER)"; }; @@ -379,6 +385,7 @@ 9DC48C3E1954361600DBDB34 /* Release */, ); defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; }; 9DC48C3F1954361600DBDB34 /* Build configuration list for PBXNativeTarget "Finding the Path of the Most Useful Folders on DiskTests" */ = { isa = XCConfigurationList; @@ -387,6 +394,7 @@ 9DC48C411954361600DBDB34 /* Release */, ); defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; diff --git a/chapter-fileManagement/Finding the Path of the Most Useful Folders on Disk/Finding the Path of the Most Useful Folders on Disk.xcodeproj/project.xcworkspace/xcuserdata/vandadnp.xcuserdatad/UserInterfaceState.xcuserstate b/chapter-fileManagement/Finding the Path of the Most Useful Folders on Disk/Finding the Path of the Most Useful Folders on Disk.xcodeproj/project.xcworkspace/xcuserdata/vandadnp.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..63a37aa1a5c7148c4b9a305c6a94f8662dcc4ef4 GIT binary patch literal 13093 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 literal 0 HcmV?d00001 diff --git a/chapter-fileManagement/Finding the Path of the Most Useful Folders on Disk/Finding the Path of the Most Useful Folders on Disk.xcodeproj/xcuserdata/vandadnp.xcuserdatad/xcschemes/Finding the Path of the Most Useful Folders on Disk.xcscheme b/chapter-fileManagement/Finding the Path of the Most Useful Folders on Disk/Finding the Path of the Most Useful Folders on Disk.xcodeproj/xcuserdata/vandadnp.xcuserdatad/xcschemes/Finding the Path of the Most Useful Folders on Disk.xcscheme index fad49d8..14bd4b4 100644 --- a/chapter-fileManagement/Finding the Path of the Most Useful Folders on Disk/Finding the Path of the Most Useful Folders on Disk.xcodeproj/xcuserdata/vandadnp.xcuserdatad/xcschemes/Finding the Path of the Most Useful Folders on Disk.xcscheme +++ b/chapter-fileManagement/Finding the Path of the Most Useful Folders on Disk/Finding the Path of the Most Useful Folders on Disk.xcodeproj/xcuserdata/vandadnp.xcuserdatad/xcschemes/Finding the Path of the Most Useful Folders on Disk.xcscheme @@ -1,6 +1,6 @@ + + - + - + Bool { /* 1 */ -//let fileManager = NSFileManager() -//let urls = fileManager.URLsForDirectory( -// NSSearchPathDirectory.DocumentDirectory, -// inDomains: NSSearchPathDomainMask.UserDomainMask) as! [NSURL] -// -//if urls.count > 0{ -// var documentsFolder = urls[0] -// println("\(documentsFolder)") -//} else { -// println("Could not find the Documents folder") -//} +// let fileManager = NSFileManager() +// let urls = fileManager.URLsForDirectory( +// NSSearchPathDirectory.DocumentDirectory, +// inDomains: NSSearchPathDomainMask.UserDomainMask) as [NSURL] +// +// if urls.count > 0{ +// let documentsFolder = urls[0] +// print("\(documentsFolder)") +// } else { +// print("Could not find the Documents folder") +// } /* 2 */ let fileManager = NSFileManager() let urls = fileManager.URLsForDirectory( NSSearchPathDirectory.CachesDirectory, - inDomains: NSSearchPathDomainMask.UserDomainMask) as! [NSURL] + inDomains: NSSearchPathDomainMask.UserDomainMask) as [NSURL] if urls.count > 0{ let documentsFolder = urls[0] - println("\(documentsFolder)") + print("\(documentsFolder)") } else { - println("Could not find the Documents folder") + print("Could not find the Documents folder") } /* 3 */ - if let tempDirectory = NSTemporaryDirectory(){ - println("\(tempDirectory)") + if NSTemporaryDirectory().characters.count > 0{ + print(NSTemporaryDirectory()) } else { - println("Could not find the temp directory") + print("Could not find the temp directory") } self.window = UIWindow(frame: UIScreen.mainScreen().bounds) diff --git a/chapter-fileManagement/Finding the Path of the Most Useful Folders on Disk/Finding the Path of the Most Useful Folders on Disk/Info.plist b/chapter-fileManagement/Finding the Path of the Most Useful Folders on Disk/Finding the Path of the Most Useful Folders on Disk/Info.plist index b4d27ff..0e5da27 100644 --- a/chapter-fileManagement/Finding the Path of the Most Useful Folders on Disk/Finding the Path of the Most Useful Folders on Disk/Info.plist +++ b/chapter-fileManagement/Finding the Path of the Most Useful Folders on Disk/Finding the Path of the Most Useful Folders on Disk/Info.plist @@ -7,7 +7,7 @@ CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier - com.pixolity.ios.cookbook.app + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/chapter-fileManagement/Finding the Path of the Most Useful Folders on Disk/Finding the Path of the Most Useful Folders on DiskTests/Info.plist b/chapter-fileManagement/Finding the Path of the Most Useful Folders on Disk/Finding the Path of the Most Useful Folders on DiskTests/Info.plist index de2a57c..6d32c15 100644 --- a/chapter-fileManagement/Finding the Path of the Most Useful Folders on Disk/Finding the Path of the Most Useful Folders on DiskTests/Info.plist +++ b/chapter-fileManagement/Finding the Path of the Most Useful Folders on Disk/Finding the Path of the Most Useful Folders on DiskTests/Info.plist @@ -7,7 +7,7 @@ CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier - com.pixolity.ios.cookbook.app + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/chapter-fileManagement/Saving Objects to Files/Saving Objects to Files.xcodeproj/project.pbxproj b/chapter-fileManagement/Saving Objects to Files/Saving Objects to Files.xcodeproj/project.pbxproj index 9039b29..80fbebd 100644 --- a/chapter-fileManagement/Saving Objects to Files/Saving Objects to Files.xcodeproj/project.pbxproj +++ b/chapter-fileManagement/Saving Objects to Files/Saving Objects to Files.xcodeproj/project.pbxproj @@ -147,7 +147,8 @@ 9D84A236195897FD00E517A8 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0600; + LastSwiftUpdateCheck = 0700; + LastUpgradeCheck = 0700; ORGANIZATIONNAME = "Pixolity Ltd."; TargetAttributes = { 9D84A23D195897FD00E517A8 = { @@ -243,6 +244,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; @@ -309,6 +311,7 @@ ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; INFOPLIST_FILE = "Saving Objects to Files/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.pixolity.ios.cookbook.app; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; @@ -320,6 +323,7 @@ ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; INFOPLIST_FILE = "Saving Objects to Files/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.pixolity.ios.cookbook.app; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; @@ -339,6 +343,7 @@ INFOPLIST_FILE = "Saving Objects to FilesTests/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; METAL_ENABLE_DEBUG_INFO = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.pixolity.ios.cookbook.app; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUNDLE_LOADER)"; }; @@ -355,6 +360,7 @@ INFOPLIST_FILE = "Saving Objects to FilesTests/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; METAL_ENABLE_DEBUG_INFO = NO; + PRODUCT_BUNDLE_IDENTIFIER = com.pixolity.ios.cookbook.app; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUNDLE_LOADER)"; }; @@ -379,6 +385,7 @@ 9D84A257195897FD00E517A8 /* Release */, ); defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; }; 9D84A258195897FD00E517A8 /* Build configuration list for PBXNativeTarget "Saving Objects to FilesTests" */ = { isa = XCConfigurationList; @@ -387,6 +394,7 @@ 9D84A25A195897FD00E517A8 /* Release */, ); defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; diff --git a/chapter-fileManagement/Saving Objects to Files/Saving Objects to Files.xcodeproj/project.xcworkspace/xcuserdata/vandadnp.xcuserdatad/UserInterfaceState.xcuserstate b/chapter-fileManagement/Saving Objects to Files/Saving Objects to Files.xcodeproj/project.xcworkspace/xcuserdata/vandadnp.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..b80b3535120daa7e40bcfbc68fa4131324b4eb8b GIT binary patch literal 19160 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 literal 0 HcmV?d00001 diff --git a/chapter-fileManagement/Saving Objects to Files/Saving Objects to Files.xcodeproj/xcuserdata/vandadnp.xcuserdatad/xcschemes/Saving Objects to Files.xcscheme b/chapter-fileManagement/Saving Objects to Files/Saving Objects to Files.xcodeproj/xcuserdata/vandadnp.xcuserdatad/xcschemes/Saving Objects to Files.xcscheme index 940c6cf..b505505 100644 --- a/chapter-fileManagement/Saving Objects to Files/Saving Objects to Files.xcodeproj/xcuserdata/vandadnp.xcuserdatad/xcschemes/Saving Objects to Files.xcscheme +++ b/chapter-fileManagement/Saving Objects to Files/Saving Objects to Files.xcodeproj/xcuserdata/vandadnp.xcuserdatad/xcschemes/Saving Objects to Files.xcscheme @@ -1,6 +1,6 @@ + + - + - + Bool { let path = NSTemporaryDirectory() + "person" - var firstPerson = Person() + let firstPerson = Person() NSKeyedArchiver.archiveRootObject(firstPerson, toFile: path) - var secondPerson = NSKeyedUnarchiver.unarchiveObjectWithFile(path) + let secondPerson = NSKeyedUnarchiver.unarchiveObjectWithFile(path) as! Person! if firstPerson == secondPerson{ - println("Both persons are the same") + print("Both persons are the same") } else { - println("Could not read the archive") + print("Could not read the archive") } self.window = UIWindow(frame: UIScreen.mainScreen().bounds) diff --git a/chapter-fileManagement/Saving Objects to Files/Saving Objects to Files/Images.xcassets/AppIcon.appiconset/Contents.json b/chapter-fileManagement/Saving Objects to Files/Saving Objects to Files/Images.xcassets/AppIcon.appiconset/Contents.json index 91bf9c1..b7f3352 100644 --- a/chapter-fileManagement/Saving Objects to Files/Saving Objects to Files/Images.xcassets/AppIcon.appiconset/Contents.json +++ b/chapter-fileManagement/Saving Objects to Files/Saving Objects to Files/Images.xcassets/AppIcon.appiconset/Contents.json @@ -15,6 +15,11 @@ "size" : "60x60", "scale" : "2x" }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + }, { "idiom" : "ipad", "size" : "29x29", diff --git a/chapter-fileManagement/Saving Objects to Files/Saving Objects to Files/Info.plist b/chapter-fileManagement/Saving Objects to Files/Saving Objects to Files/Info.plist index b4d27ff..0e5da27 100644 --- a/chapter-fileManagement/Saving Objects to Files/Saving Objects to Files/Info.plist +++ b/chapter-fileManagement/Saving Objects to Files/Saving Objects to Files/Info.plist @@ -7,7 +7,7 @@ CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier - com.pixolity.ios.cookbook.app + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/chapter-fileManagement/Saving Objects to Files/Saving Objects to FilesTests/Info.plist b/chapter-fileManagement/Saving Objects to Files/Saving Objects to FilesTests/Info.plist index de2a57c..6d32c15 100644 --- a/chapter-fileManagement/Saving Objects to Files/Saving Objects to FilesTests/Info.plist +++ b/chapter-fileManagement/Saving Objects to Files/Saving Objects to FilesTests/Info.plist @@ -7,7 +7,7 @@ CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier - com.pixolity.ios.cookbook.app + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/chapter-fileManagement/Writing to and Reading from Files/Writing to and Reading from Files.xcodeproj/project.pbxproj b/chapter-fileManagement/Writing to and Reading from Files/Writing to and Reading from Files.xcodeproj/project.pbxproj index d0a6f98..9ef6750 100644 --- a/chapter-fileManagement/Writing to and Reading from Files/Writing to and Reading from Files.xcodeproj/project.pbxproj +++ b/chapter-fileManagement/Writing to and Reading from Files/Writing to and Reading from Files.xcodeproj/project.pbxproj @@ -147,7 +147,8 @@ 9D66CB1C19543B7E00CDDE2A /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0600; + LastSwiftUpdateCheck = 0700; + LastUpgradeCheck = 0700; ORGANIZATIONNAME = "Pixolity Ltd."; TargetAttributes = { 9D66CB2319543B7E00CDDE2A = { @@ -243,6 +244,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; @@ -309,6 +311,7 @@ ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; INFOPLIST_FILE = "Writing to and Reading from Files/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.pixolity.ios.cookbook.app; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; @@ -320,6 +323,7 @@ ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; INFOPLIST_FILE = "Writing to and Reading from Files/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.pixolity.ios.cookbook.app; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; @@ -339,6 +343,7 @@ INFOPLIST_FILE = "Writing to and Reading from FilesTests/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; METAL_ENABLE_DEBUG_INFO = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.pixolity.ios.cookbook.app; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUNDLE_LOADER)"; }; @@ -355,6 +360,7 @@ INFOPLIST_FILE = "Writing to and Reading from FilesTests/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; METAL_ENABLE_DEBUG_INFO = NO; + PRODUCT_BUNDLE_IDENTIFIER = com.pixolity.ios.cookbook.app; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUNDLE_LOADER)"; }; @@ -379,6 +385,7 @@ 9D66CB3D19543B7E00CDDE2A /* Release */, ); defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; }; 9D66CB3E19543B7E00CDDE2A /* Build configuration list for PBXNativeTarget "Writing to and Reading from FilesTests" */ = { isa = XCConfigurationList; @@ -387,6 +394,7 @@ 9D66CB4019543B7E00CDDE2A /* Release */, ); defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; diff --git a/chapter-fileManagement/Writing to and Reading from Files/Writing to and Reading from Files.xcodeproj/project.xcworkspace/xcuserdata/vandadnp.xcuserdatad/UserInterfaceState.xcuserstate b/chapter-fileManagement/Writing to and Reading from Files/Writing to and Reading from Files.xcodeproj/project.xcworkspace/xcuserdata/vandadnp.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..6480bd91114effc1381d6ab7c6f04432d66fd8e6 GIT binary patch literal 12463 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 z + + - + - + CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier - com.pixolity.ios.cookbook.app + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/chapter-fileManagement/Writing to and Reading from Files/Writing to and Reading from FilesTests/Info.plist b/chapter-fileManagement/Writing to and Reading from Files/Writing to and Reading from FilesTests/Info.plist index de2a57c..6d32c15 100644 --- a/chapter-fileManagement/Writing to and Reading from Files/Writing to and Reading from FilesTests/Info.plist +++ b/chapter-fileManagement/Writing to and Reading from Files/Writing to and Reading from FilesTests/Info.plist @@ -7,7 +7,7 @@ CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier - com.pixolity.ios.cookbook.app + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName