From 1ef79ba4b9a7aac8fd4a67c646dd485012c4108a Mon Sep 17 00:00:00 2001 From: Christopher Bell Date: Tue, 27 Sep 2016 18:06:05 +0100 Subject: [PATCH 01/27] Updated to Swift 3 Single change from println to print. --- .DS_Store | Bin 0 -> 10244 bytes 1a. The Basics.playground/contents.xcplayground | 2 +- .../contents.xcworkspacedata | 7 +++++++ .../UserInterfaceState.xcuserstate | Bin 0 -> 6962 bytes 1a. The Basics.playground/section-1.swift | 2 +- 1a. The Basics.playground/timeline.xctimeline | 8 ++++++-- 6 files changed, 15 insertions(+), 4 deletions(-) create mode 100644 .DS_Store create mode 100644 1a. The Basics.playground/playground.xcworkspace/contents.xcworkspacedata create mode 100644 1a. The Basics.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..846dadcc40976ba9ec9b7f33853aca73e3ea791e GIT binary patch literal 10244 zcmeHM-A+?M5S|4RF&bk`_$vn1gbS|-h@#%L&|QR z$M7wD1N^?(ZP~+5+;U+g?k0PNb9(lhnQv!i&n_Zj*1C;l5i26&=#+PF<8ndc@9gK= zh<`EowH!(&2eJ#9T4EqEkQhh|BnA=#{~`lev)RUPIhn4Bfy6*!V88(DgGHw- zdf9VQO9w8x1%MpGV{P~w`v4tdy)1g!b5e%_)9oINA8Py-!?@x2-STzFqL)1<-Ec8( zxEQb5_#KK-?HFhEbumRJ(={=W7&y-W_wF;YEK9P8j0^Yg9cf}8e}v};(vqqi%X{73 zccm?j%~n>gwXzyUBjL<<^sgt{RK+9^mlbgf7#-QesX!wROWp$OSAa$99x2wgbfpHA zI_zk|s!klDxpM}w0K^qV+=MTCdRoy0S`~M7+{JnvS~&;I$3P&9L?vDm_bpsML-H=e z^9XD*FtQaeu%OtrOR#y?Vr3nERH1{K+nA{cJqEnw^vpxg6V*}%3l8hbUN9zd==XrW zs^}$o1A8MZR3^R!Ojuw%Rg70U|Bh3#e02sw{8`{XQ~VvoJI}F*TSc6ahge?e`B~KG ziuw|W#M(tRSn2DC$}w^=dL!V1dEw%1M`PH^np)aK3`Zl1p52|CXx82bqKmS=Wfq7n zjbU;STMZCbG9Oqv0o=N0wX4-6770w|kfwpuxN!dCJ^m6{Mh=Haka7|%`9|4`3sKr%PYN;#Vk$RY`@-y&cVz4%ppoe(J@fPQhW`X2#vIjn-O@fFzBmHj~+4UtLeZTQ8rAg;pGKGsTCEl(rKMOasP7{+!)Z0^gd06qP+ zBm<{hMfe3{h2F3>Mt!a2vfw7x;|eNZS+*b-!N{5KJ6(Hz1aphp7`IaM9y - + \ No newline at end of file diff --git a/1a. The Basics.playground/playground.xcworkspace/contents.xcworkspacedata b/1a. The Basics.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/1a. The Basics.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/1a. The Basics.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate b/1a. The Basics.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..a55396f2ff824eaafdb59d303d809214d1e64dbe GIT binary patch literal 6962 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 hos>S2&PwN`i=D(yojUc + documentLocation = "#CharacterRangeLen=0&CharacterRangeLoc=8817&EndingColumnNumber=5&EndingLineNumber=4&StartingColumnNumber=4&StartingLineNumber=4&Timestamp=496688334.840134" + selectedRepresentationIndex = "0" + shouldTrackSuperviewWidth = "NO"> + documentLocation = "#CharacterRangeLen=17&CharacterRangeLoc=7994&EndingColumnNumber=21&EndingLineNumber=223&StartingColumnNumber=4&StartingLineNumber=223&Timestamp=496688334.842094" + selectedRepresentationIndex = "0" + shouldTrackSuperviewWidth = "NO"> From f9c92987591e0924718b5f95164ee24e8863ba49 Mon Sep 17 00:00:00 2001 From: Christopher Bell Date: Tue, 27 Sep 2016 22:15:59 +0100 Subject: [PATCH 02/27] Checked for Swift 3 compatibility No changes --- .DS_Store | Bin 10244 -> 10244 bytes .../contents.xcplayground | 2 +- .../contents.xcworkspacedata | 7 +++++++ .../UserInterfaceState.xcuserstate | Bin 0 -> 7177 bytes 1b. Type alliases.playground/section-1.swift | 1 + .../timeline.xctimeline | 4 +++- 6 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 1b. Type alliases.playground/playground.xcworkspace/contents.xcworkspacedata create mode 100644 1b. Type alliases.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/.DS_Store b/.DS_Store index 846dadcc40976ba9ec9b7f33853aca73e3ea791e..c57c2c7f03474b1e406b023d4d7d7734af5cb90d 100644 GIT binary patch delta 23 ecmZn(XbITBFT%(?SwJL&g@J*AWpjqe9AN-Q;stR4 delta 23 dcmZn(XbITBFT%(;SwJL& - + \ No newline at end of file diff --git a/1b. Type alliases.playground/playground.xcworkspace/contents.xcworkspacedata b/1b. Type alliases.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/1b. Type alliases.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/1b. Type alliases.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate b/1b. Type alliases.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..3b68bbe5310a60a3c69b85e8f50b686f6a55f65f GIT binary patch literal 7177 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 literal 0 HcmV?d00001 diff --git a/1b. Type alliases.playground/section-1.swift b/1b. Type alliases.playground/section-1.swift index 4c999bc..521a38a 100644 --- a/1b. Type alliases.playground/section-1.swift +++ b/1b. Type alliases.playground/section-1.swift @@ -1,4 +1,5 @@ // ------------------------------------------------------------------------------------------------ +// Last checked September 2016 // Things to know: // // * Type Aliases allow you to provide a different name for types, diff --git a/1b. Type alliases.playground/timeline.xctimeline b/1b. Type alliases.playground/timeline.xctimeline index 74fb0a0..2372d0d 100644 --- a/1b. Type alliases.playground/timeline.xctimeline +++ b/1b. Type alliases.playground/timeline.xctimeline @@ -3,7 +3,9 @@ version = "3.0"> + documentLocation = "#CharacterRangeLen=0&CharacterRangeLoc=653&EndingColumnNumber=5&EndingLineNumber=4&StartingColumnNumber=4&StartingLineNumber=4&Timestamp=496703717.484851" + selectedRepresentationIndex = "0" + shouldTrackSuperviewWidth = "NO"> From 6b9fba05ee59342aa91767b62cc9568737135f83 Mon Sep 17 00:00:00 2001 From: Christopher Bell Date: Tue, 27 Sep 2016 22:18:00 +0100 Subject: [PATCH 03/27] Checked for Swift 3 compatibility No changes --- .DS_Store | Bin 10244 -> 10244 bytes 1c. Tuples.playground/contents.xcplayground | 2 +- .../contents.xcworkspacedata | 7 +++++++ .../UserInterfaceState.xcuserstate | Bin 0 -> 8436 bytes 1c. Tuples.playground/section-1.swift | 1 + 1c. Tuples.playground/timeline.xctimeline | 6 ------ 6 files changed, 9 insertions(+), 7 deletions(-) create mode 100644 1c. Tuples.playground/playground.xcworkspace/contents.xcworkspacedata create mode 100644 1c. Tuples.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate delete mode 100644 1c. Tuples.playground/timeline.xctimeline diff --git a/.DS_Store b/.DS_Store index c57c2c7f03474b1e406b023d4d7d7734af5cb90d..986b60a5ebc86ac14dd829385dcbe25abf4409e9 100644 GIT binary patch delta 153 zcmZn(XbG6$¥U^hRb!e$?KVA delta 47 zcmZn(XbG6$&nUk!U^hRb{AM13xh$Lq7#JAj{{z8hCDEr`6B`OPvn%{!*<2{f%nSgU CLJ?R1 diff --git a/1c. Tuples.playground/contents.xcplayground b/1c. Tuples.playground/contents.xcplayground index 18a12f6..8e39341 100644 --- a/1c. Tuples.playground/contents.xcplayground +++ b/1c. Tuples.playground/contents.xcplayground @@ -4,4 +4,4 @@ - + \ No newline at end of file diff --git a/1c. Tuples.playground/playground.xcworkspace/contents.xcworkspacedata b/1c. Tuples.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/1c. Tuples.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/1c. Tuples.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate b/1c. Tuples.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..f2024eb41b57b67f250cea9a6557f42ca404bc53 GIT binary patch literal 8436 zcmb_h33yZ0wqAQTY1*Vo&dG3^gsIR{6+2RfRs=dS38i$R6l_S_LkXlwNm6JTmtH3X z1O!ABg_co3QE>)DQB(w(3aFs>;yi(ut6X`A%G)QWNgE!%>-W9ad`-?dd+)W^_^-A0 zscvvNeg3qxlR$t%1SmiWk@PqEdqu)b(d%=1+!YC)>ShIw2hrQ^xEwxTD`-K76eC)J10EH43QO!qWOexUm4;A#n@Df(5K#gD%h&x}g#y zQH4<$jcU|vfgTVCJsAhxAOU(~3~Ev0MS~pjSY_ud5`Cw;)-$WrQJw4Xj`Wo~ea>o^ zSQQ!==5^GIcCIITFxFcudd1ohLu^f+$L;reTrL&>b}p$iw=&s|@iMn_Mx!{gmI>gT z;uO7ht_Pc*Q{!i0a$|~i&KlyP)Z=kgcjC{^4e7jD7$^3;%=`fvxdr*jd6@(HCifeb z**7^ecUVSp-hhJK{EYtT>FHVhqU@Y7XHHsD+`z1PNpW-1`)0E10a=;z=A8&wH61cq zm^wA6KLPz=01Sl8O4*=prjH8wQuHyq=Xkx2=2kW#tD>-EYybeFgC@Ei3LtSS42B^v z6tW=)av=}$(SSxYp&12?MGIQD!Z2o@5ik-)!5z$GW6;J7bRXW258)wZv?Q#$lSx}p z>-2lPIbP9W=Qws>GSxGy&@t0l=U|T~vIk5HqaD?v%g!bLsdCEvPM6c)EKw<8faWiE zinC;LAyV=VVa5#8Z@%br*12y$L1IXz?-ZFk2su6J^#a3L(Xf@zjd;62?xg!&@s46tS6gUQeUDHeal6tdm5N z6fMaiv&&C9=U}K2F3v=c*BKOz?UaH2If6HFEF(Px zOWA(QU^zStD_|w8f=8I>L3|tSsR^i~ssk*F9R8_+8TAgQyW_Eh5bj#BY3!8X+Kw?y z#apm1-i#@BF14bDDJg{+N_KL_>PWv>pYM^#rG(I@#P4ma@i%%!83NWw5bzlGL46xM z0Z%fH*D=>?sqEOJEU-J?%DgYRGQB1xuC%eiCHiE<*a(~KTvxVdhkn=wPIp~kQIW&x zZH3K{^&jRK7hIG7+Tbb1!8X_qJ7E6Apzh0xM^ErO>qQo3^$nPY=?HeNV2aZv-j9gFje%X4tM&eHdd#)M2FX%?3?AB;!kCK_wJh}bDq)=iilKMif7?D zJ7>%VQZ7C4MqQU>oWhqcVO{m+mkNZ=S#3nOqGZ)<@z9E4S+V^{

kGklzF&as#|Ue+m4~BUo2rM$Xyq>%y+VM?r}R< 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 literal 0 HcmV?d00001 diff --git a/1c. Tuples.playground/section-1.swift b/1c. Tuples.playground/section-1.swift index 456f8c6..5eb97a1 100644 --- a/1c. Tuples.playground/section-1.swift +++ b/1c. Tuples.playground/section-1.swift @@ -1,4 +1,5 @@ // ------------------------------------------------------------------------------------------------ +// Checked September 2016 // Things to know: // // * Tuples are groups of values combined into a single, compound value diff --git a/1c. Tuples.playground/timeline.xctimeline b/1c. Tuples.playground/timeline.xctimeline deleted file mode 100644 index bf468af..0000000 --- a/1c. Tuples.playground/timeline.xctimeline +++ /dev/null @@ -1,6 +0,0 @@ - - - - - From 4805592bf338069fcae0d046d34dc137dc055a35 Mon Sep 17 00:00:00 2001 From: Christopher Bell Date: Tue, 27 Sep 2016 22:28:26 +0100 Subject: [PATCH 04/27] Updated to Swift 3 Some updates required --- .DS_Store | Bin 10244 -> 10244 bytes .../contents.xcplayground | 2 +- .../contents.xcworkspacedata | 7 ++++++ .../UserInterfaceState.xcuserstate | Bin 0 -> 7145 bytes 1d. Optionals.playground/section-1.swift | 21 +++++++++--------- 1d. Optionals.playground/timeline.xctimeline | 4 +++- 6 files changed, 22 insertions(+), 12 deletions(-) create mode 100644 1d. Optionals.playground/playground.xcworkspace/contents.xcworkspacedata create mode 100644 1d. Optionals.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/.DS_Store b/.DS_Store index 986b60a5ebc86ac14dd829385dcbe25abf4409e9..65bf49cb8bc678fcb708fe0562044d2f3f4fa895 100644 GIT binary patch delta 27 ccmZn(XbISmC(6RWz`(Y-Nc0asj5Ub~0Bdgt0{{R3 delta 27 bcmZn(XbISmC(8042sRgq{^5tQCNTj3&W8@~ diff --git a/1d. Optionals.playground/contents.xcplayground b/1d. Optionals.playground/contents.xcplayground index 18a12f6..8e39341 100644 --- a/1d. Optionals.playground/contents.xcplayground +++ b/1d. Optionals.playground/contents.xcplayground @@ -4,4 +4,4 @@ - + \ No newline at end of file diff --git a/1d. Optionals.playground/playground.xcworkspace/contents.xcworkspacedata b/1d. Optionals.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/1d. Optionals.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/1d. Optionals.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate b/1d. Optionals.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..4704b91f08c1d38eb6b350b36b6632f333a5a482 GIT binary patch literal 7145 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 = .None +let optionalA: String? = .none +let optionalB: Optional = .none // ------------------------------------------------------------------------------------------------ // Unwrapping @@ -65,7 +66,7 @@ let unwrappedInt = optionalConvertedNumber! // Implicit unwrapping isn't very safe because if the optional doesn't hold a value, it will // generate a runtime error. To verify that is's safe, you can check the optional with an if // statement. -if optionalConvertedNumber != .None +if optionalConvertedNumber != .none { // It's now safe to force-unwrap because we KNOW it has a value let anotherUnwrappedInt = optionalConvertedNumber! @@ -99,15 +100,15 @@ else // We can still use optional binding to bind to another optional value, if we do so explicitly // by specifying the type of the stored value that we're binding to. -if let optionalIntValue:Int? = optionalConvertedNumber +if let optionalIntValue:Int = optionalConvertedNumber { // 'optionalIntValue' is still an optional, but it's known to be safe. We can still check // it here, though, because it's still an optional. If it weren't optional, this if statement // wouldn't compile: - if optionalIntValue != .None + if optionalIntValue != .none { // 'optionalIntValue' is optional, so we still use the force-unwrap here: - "intValue is optional, but has the value \(optionalIntValue!)" + "intValue is optional, but has the value \(optionalIntValue)" } } @@ -115,7 +116,7 @@ if let optionalIntValue:Int? = optionalConvertedNumber optionalConvertedNumber = nil // Now if we check it, we see that it holds no value: -if optionalConvertedNumber != .None +if optionalConvertedNumber != .none { "optionalConvertedNumber holds a value (\(optionalConvertedNumber))! (this should not happen)" } diff --git a/1d. Optionals.playground/timeline.xctimeline b/1d. Optionals.playground/timeline.xctimeline index ba175f8..9213b1d 100644 --- a/1d. Optionals.playground/timeline.xctimeline +++ b/1d. Optionals.playground/timeline.xctimeline @@ -3,7 +3,9 @@ version = "3.0"> + documentLocation = "#CharacterRangeLen=0&CharacterRangeLoc=6968&EndingColumnNumber=5&EndingLineNumber=3&StartingColumnNumber=4&StartingLineNumber=3&Timestamp=496704474.911197" + selectedRepresentationIndex = "0" + shouldTrackSuperviewWidth = "NO"> From b418cb8031f81e96d09ca312eae872e39015bdf9 Mon Sep 17 00:00:00 2001 From: Christopher Bell Date: Tue, 27 Sep 2016 22:29:20 +0100 Subject: [PATCH 05/27] Checked for Swift 3 compatibility No changes --- .DS_Store | Bin 10244 -> 10244 bytes .../contents.xcplayground | 2 +- .../contents.xcworkspacedata | 7 +++++++ .../UserInterfaceState.xcuserstate | Bin 0 -> 7057 bytes 1e. Assertions.playground/section-1.swift | 1 + 1e. Assertions.playground/timeline.xctimeline | 4 +++- 6 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 1e. Assertions.playground/playground.xcworkspace/contents.xcworkspacedata create mode 100644 1e. Assertions.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/.DS_Store b/.DS_Store index 65bf49cb8bc678fcb708fe0562044d2f3f4fa895..b0f98a03bfc97bb5fc2604dcc2d8b18d183d8a3c 100644 GIT binary patch delta 27 ccmZn(XbISGK$L}nfq{MV5z#;VFqQ)o0C%wmsQ>@~ delta 27 bcmZn(XbISGK$PV_5Ntjo`iCFJa$o`g+OrRn diff --git a/1e. Assertions.playground/contents.xcplayground b/1e. Assertions.playground/contents.xcplayground index 18a12f6..8e39341 100644 --- a/1e. Assertions.playground/contents.xcplayground +++ b/1e. Assertions.playground/contents.xcplayground @@ -4,4 +4,4 @@ - + \ No newline at end of file diff --git a/1e. Assertions.playground/playground.xcworkspace/contents.xcworkspacedata b/1e. Assertions.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/1e. Assertions.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/1e. Assertions.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate b/1e. Assertions.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..e2f883be3d87ad21023396cfcb56c548cdd7ead7 GIT binary patch literal 7057 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 K&*=Ze;Qs=nrlR2h literal 0 HcmV?d00001 diff --git a/1e. Assertions.playground/section-1.swift b/1e. Assertions.playground/section-1.swift index 460e628..8aa839a 100644 --- a/1e. Assertions.playground/section-1.swift +++ b/1e. Assertions.playground/section-1.swift @@ -1,4 +1,5 @@ // ------------------------------------------------------------------------------------------------ +// Checked September 2016 // Things to know: // // * Assertions only trigger in debug mode and not in published builds diff --git a/1e. Assertions.playground/timeline.xctimeline b/1e. Assertions.playground/timeline.xctimeline index bd6221e..af911ef 100644 --- a/1e. Assertions.playground/timeline.xctimeline +++ b/1e. Assertions.playground/timeline.xctimeline @@ -3,7 +3,9 @@ version = "3.0"> + documentLocation = "#CharacterRangeLen=0&CharacterRangeLoc=602&EndingColumnNumber=5&EndingLineNumber=3&StartingColumnNumber=4&StartingLineNumber=3&Timestamp=496704541.727928" + selectedRepresentationIndex = "0" + shouldTrackSuperviewWidth = "NO"> From 65d973b97a93814ae27e60f988b85cb401a3bdeb Mon Sep 17 00:00:00 2001 From: Christopher Bell Date: Tue, 27 Sep 2016 22:36:12 +0100 Subject: [PATCH 06/27] Updated to Swift 3 Some changes needed --- .DS_Store | Bin 10244 -> 10244 bytes .../contents.xcplayground | 2 +- .../contents.xcworkspacedata | 7 +++++++ .../UserInterfaceState.xcuserstate | Bin 0 -> 7191 bytes .../section-1.swift | 8 +++++--- .../timeline.xctimeline | 4 +++- 6 files changed, 16 insertions(+), 5 deletions(-) create mode 100644 2. Basic operations.playground/playground.xcworkspace/contents.xcworkspacedata create mode 100644 2. Basic operations.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/.DS_Store b/.DS_Store index b0f98a03bfc97bb5fc2604dcc2d8b18d183d8a3c..05594f612a1e4b9e74bb4e59ec8c9fe26195fcbb 100644 GIT binary patch delta 27 ccmZn(XbIRLBgVqOz`(ItLF^AdjP-;O0AG^^WdHyG delta 27 bcmZn(XbIRLBgXO{2sSH-{o#kPo-hIc!ha4; diff --git a/2. Basic operations.playground/contents.xcplayground b/2. Basic operations.playground/contents.xcplayground index 18a12f6..8e39341 100644 --- a/2. Basic operations.playground/contents.xcplayground +++ b/2. Basic operations.playground/contents.xcplayground @@ -4,4 +4,4 @@ - + \ No newline at end of file diff --git a/2. Basic operations.playground/playground.xcworkspace/contents.xcworkspacedata b/2. Basic operations.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/2. Basic operations.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/2. Basic operations.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate b/2. Basic operations.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..f42471b84c22b7552fa9fcd39afb79411bc04175 GIT binary patch literal 7191 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 use truncatingRemainder *** +var d = a.truncatingRemainder(dividingBy: b) // ------------------------------------------------------------------------------------------------ // Range operators @@ -53,7 +55,7 @@ for i in 1...10 // Unary, Binary and Ternary operators // // Unary prefix operators appear before their taget. Here we increment a then negate it: -++a +a += 1 a = -a // You can also use the uniary + operator, though it doesn't do anything @@ -67,7 +69,7 @@ var truefalse = true truefalse = !truefalse // Unary postfix operators appear after their target: i++ -a-- +a -= 1 a // Binary operators are infix because they appear between to targets diff --git a/2. Basic operations.playground/timeline.xctimeline b/2. Basic operations.playground/timeline.xctimeline index 9a87e18..adc86da 100644 --- a/2. Basic operations.playground/timeline.xctimeline +++ b/2. Basic operations.playground/timeline.xctimeline @@ -3,7 +3,9 @@ version = "3.0"> + documentLocation = "#CharacterRangeLen=0&CharacterRangeLoc=3596&EndingColumnNumber=5&EndingLineNumber=3&StartingColumnNumber=4&StartingLineNumber=3&Timestamp=496704952.717255" + selectedRepresentationIndex = "0" + shouldTrackSuperviewWidth = "NO"> From 2954d99123401cf27eb5896f558d967f9dacce97 Mon Sep 17 00:00:00 2001 From: Christopher Bell Date: Tue, 27 Sep 2016 22:42:42 +0100 Subject: [PATCH 07/27] Update to Swift 3 Some changes made --- .DS_Store | Bin 10244 -> 10244 bytes .../contents.xcplayground | 2 +- .../contents.xcworkspacedata | 7 +++++++ .../UserInterfaceState.xcuserstate | Bin 0 -> 7231 bytes .../section-1.swift | 19 +++++------------- .../timeline.xctimeline | 4 +++- 6 files changed, 16 insertions(+), 16 deletions(-) create mode 100644 3. Strings and Characters.playground/playground.xcworkspace/contents.xcworkspacedata create mode 100644 3. Strings and Characters.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/.DS_Store b/.DS_Store index 05594f612a1e4b9e74bb4e59ec8c9fe26195fcbb..0ff2c0ee3a4fd61b273ae610351ec5dde3e86087 100644 GIT binary patch delta 26 ecmZn(XbISGO`L^+fq`@LE%876VAkYY;#vT63 - + \ No newline at end of file diff --git a/3. Strings and Characters.playground/playground.xcworkspace/contents.xcworkspacedata b/3. Strings and Characters.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/3. Strings and Characters.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/3. Strings and Characters.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate b/3. Strings and Characters.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..0d46fd973c73cb235feb48c9cbb30b560852a769 GIT binary patch literal 7231 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 literal 0 HcmV?d00001 diff --git a/3. Strings and Characters.playground/section-1.swift b/3. Strings and Characters.playground/section-1.swift index e78b818..ea8b8a0 100644 --- a/3. Strings and Characters.playground/section-1.swift +++ b/3. Strings and Characters.playground/section-1.swift @@ -1,4 +1,5 @@ // ------------------------------------------------------------------------------------------------ +// Checked and updated September 2016 // Things to know: // // * Strings are bridged perfectly with NSString class @@ -40,11 +41,11 @@ func somefunc(a: String) } var originalString = "Original" -somefunc(originalString) +somefunc(a: originalString) originalString // not modified // You can iterate over a string like this: -for character in originalString +for character in originalString.characters { character } @@ -53,18 +54,8 @@ for character in originalString // instead of a String: var notAString: Character = "t" -// There is no length or count member of string, you have to use the global function, -// countElements() -// -// This is much like calling strlen in which it iterates over the Unicode string and counts -// characters. Note that Unicode chars are different lenghts, so this is a non-trivial process. -// -// “Note also that the character count returned by countElements is not always the same as the -// length property of an NSString that contains the same characters. The length of an NSString is -// based on the number of 16-bit code units within the string’s UTF-16 representation and not the -// number of Unicode characters within the string. To reflect this fact, the length property from -// NSString is called utf16count when it is accessed on a Swift String value.” -countElements(originalString) +// Use String.characters.count to get number of characters in a string +originalString.characters.count // Strings can be concatenated with strings and characters var helloworld = "hello, " + "world" diff --git a/3. Strings and Characters.playground/timeline.xctimeline b/3. Strings and Characters.playground/timeline.xctimeline index ceeb430..9169aa0 100644 --- a/3. Strings and Characters.playground/timeline.xctimeline +++ b/3. Strings and Characters.playground/timeline.xctimeline @@ -3,7 +3,9 @@ version = "3.0"> + documentLocation = "#CharacterRangeLen=0&CharacterRangeLoc=2651&EndingColumnNumber=5&EndingLineNumber=10&StartingColumnNumber=4&StartingLineNumber=10&Timestamp=496705345.61362" + selectedRepresentationIndex = "0" + shouldTrackSuperviewWidth = "NO"> From 9bc54736ac29a8ce0354b77b8512b17b54b30b92 Mon Sep 17 00:00:00 2001 From: Christopher Bell Date: Tue, 27 Sep 2016 22:46:16 +0100 Subject: [PATCH 08/27] Updated to Swift 3 Some changes made --- .DS_Store | Bin 10244 -> 10244 bytes 4a. Arrays.playground/contents.xcplayground | 2 +- .../contents.xcworkspacedata | 7 +++++++ .../UserInterfaceState.xcuserstate | Bin 0 -> 7127 bytes 4a. Arrays.playground/section-1.swift | 11 ++++++----- 4a. Arrays.playground/timeline.xctimeline | 4 +++- 6 files changed, 17 insertions(+), 7 deletions(-) create mode 100644 4a. Arrays.playground/playground.xcworkspace/contents.xcworkspacedata create mode 100644 4a. Arrays.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/.DS_Store b/.DS_Store index 0ff2c0ee3a4fd61b273ae610351ec5dde3e86087..894a7034a2110890b6743295e2c40d14bca2250c 100644 GIT binary patch delta 51 zcmZn(XbG6$UDU^hRb;$|KJ5e^mx1_rLlx5SNj%7TmXa`N-ifdY)1H6)g@Z)R8c G%MJi@jt(gR delta 41 tcmZn(XbG6$¥U^hRb!e$-;5e|<3V8FnzIZ0wE`@{yT&Fl()*#S>R5QG2# diff --git a/4a. Arrays.playground/contents.xcplayground b/4a. Arrays.playground/contents.xcplayground index 18a12f6..8e39341 100644 --- a/4a. Arrays.playground/contents.xcplayground +++ b/4a. Arrays.playground/contents.xcplayground @@ -4,4 +4,4 @@ - + \ No newline at end of file diff --git a/4a. Arrays.playground/playground.xcworkspace/contents.xcworkspacedata b/4a. Arrays.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/4a. Arrays.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/4a. Arrays.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate b/4a. Arrays.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..0b729bd4b941ec9eca11cb747089b1696153b2ed GIT binary patch literal 7127 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 literal 0 HcmV?d00001 diff --git a/4a. Arrays.playground/section-1.swift b/4a. Arrays.playground/section-1.swift index 716b695..4f3a760 100644 --- a/4a. Arrays.playground/section-1.swift +++ b/4a. Arrays.playground/section-1.swift @@ -1,4 +1,5 @@ // ------------------------------------------------------------------------------------------------ +// Checked and updated September 2016 // Things to know: // // * Arrays are ordered lists of elements @@ -72,7 +73,7 @@ shoppingList[4...6] = ["Banannas", "Apples"] shoppingList[4..<6] = ["Limes", "Mint leaves", "Sugar"] // We can insert an item at a given index -shoppingList.insert("Maple Syrup", atIndex: 3) +shoppingList.insert("Maple Syrup", at: 3) // We can remove the last element. During this, we can preserve the value of what was removed // into a stored value @@ -87,9 +88,9 @@ for item in shoppingList item } -// We can also use the the enumerate() method to return a tuple containing the index and value +// We can also use the the enumerated() method to return a tuple containing the index and value // for each element: -for (index, value) in enumerate(shoppingList) +for (index, value) in shoppingList.enumerated() { index value @@ -111,11 +112,11 @@ someInts someInts = [] // We can initialize an array and and fill it with default values -var threeDoubles = [Double](count: 3, repeatedValue: 3.3) +var threeDoubles = [Double](repeating: 3.3, count: 3) // We can also use the Array initializer to fill it with default values. Note that we don't need to // specify type since it is inferred: -var anotherThreeDoubles = Array(count: 3, repeatedValue: 2.5) +var anotherThreeDoubles = Array(repeating: 2.5, count: 3) // If you store an array in a constant, it is considered "Immutable" let immutableArray = ["a", "b"] diff --git a/4a. Arrays.playground/timeline.xctimeline b/4a. Arrays.playground/timeline.xctimeline index 69032d4..e5cd975 100644 --- a/4a. Arrays.playground/timeline.xctimeline +++ b/4a. Arrays.playground/timeline.xctimeline @@ -3,7 +3,9 @@ version = "3.0"> + documentLocation = "#CharacterRangeLen=0&CharacterRangeLoc=5468&EndingColumnNumber=5&EndingLineNumber=18&StartingColumnNumber=4&StartingLineNumber=18&Timestamp=496705559.74359" + selectedRepresentationIndex = "0" + shouldTrackSuperviewWidth = "NO"> From d9045310886b295b3b1d1183fafb2a703a04d0b5 Mon Sep 17 00:00:00 2001 From: Christopher Bell Date: Tue, 27 Sep 2016 22:47:09 +0100 Subject: [PATCH 09/27] Updated to Swift 3 One change made --- .DS_Store | Bin 10244 -> 10244 bytes .../contents.xcplayground | 2 +- .../contents.xcworkspacedata | 7 +++++++ .../UserInterfaceState.xcuserstate | Bin 0 -> 7079 bytes 4b. Dictionaries.playground/section-1.swift | 3 ++- .../timeline.xctimeline | 8 ++++++-- 6 files changed, 16 insertions(+), 4 deletions(-) create mode 100644 4b. Dictionaries.playground/playground.xcworkspace/contents.xcworkspacedata create mode 100644 4b. Dictionaries.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/.DS_Store b/.DS_Store index 894a7034a2110890b6743295e2c40d14bca2250c..b028cd78de4f9fdad0822745fa7f7fb2e8a79610 100644 GIT binary patch delta 17 YcmZn(XbIS`L4t*Wfq{GT7Ks3U05jPI4gdfE delta 17 XcmZn(XbIS`L4xH!5NzHe5x@@sQF#de diff --git a/4b. Dictionaries.playground/contents.xcplayground b/4b. Dictionaries.playground/contents.xcplayground index 18a12f6..8e39341 100644 --- a/4b. Dictionaries.playground/contents.xcplayground +++ b/4b. Dictionaries.playground/contents.xcplayground @@ -4,4 +4,4 @@ - + \ No newline at end of file diff --git a/4b. Dictionaries.playground/playground.xcworkspace/contents.xcworkspacedata b/4b. Dictionaries.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/4b. Dictionaries.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/4b. Dictionaries.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate b/4b. Dictionaries.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..6733f84196d28071c1a283f1212d9c45f28986cd GIT binary patch literal 7079 zcmb_gd3;k<_CMz)XrWXj?3Ja*Q56;#a*BW4kWOH1Ny@NNP~132ty$oav&eZz-3SZr7#JmLIunLCtL|GXaF~OK!!$W zf@bhR3oHQ&OW|6$4wk|7a0A>2t6>e?4-ddvSO*=@3F~14Y=MVi8|;Rs;A!|9?18;- z0A7M4a1>sLlkg#&f{)-dd<6L2D4 zfs=4DPQh}ViWOLmby$xsY(O8jpdSMm!t3z{yb*80oADOB6_?{}xEj~s{rCWG#)t4x z+<`lBH$IJj!{>1y9>7C*7?0pFJdXdwllUQ?!jJGP{2IT(Z}H#w1OAG?;qOF8cw!?G z=}Y>NR5FMRBY9*58A&cBmyyfKcruO5Aoavat|TrZlexrCf@A?{o1X5E_DDD`;5fnZGC^vcO0r)Y`& zoZf()diEKVeJ-{}ra+BUaEg-}y*_zNc6Rpk5KHrHcXN=H zL7=r+4rY({hMOY|**@77^k;_Jyp7@P5e-=bhv$@dnc9Hg74*uXtX7|^y(t)o_&wQg zKrRf2JQz`@I^OSUk!#hja%g&a6|=vSkw?~+S51wUlDc3NjGj|oH6;>uHTdMhV9?dR z9!5a{jAV94f2y0iMA@8~YLv~Xalaf2A+-a>QLzJxs8wlCGUnBytL zV(o=_FmhITRrfPP%u9Y)0I8cG0Ie_|f)Ii*MCbsTM$_p)I*1OYLpDJhEQEG2Go}=% zqeJOV`UFdo0j%u$DPFs*XPsBO8j1t{a4_KW$w6o7s8MAFql!y2iwpBcW{wz{lapDH zlT((NSDMG_ykK-;>FA<4%JOJkmIYZlJH`I&!PKBf4$7W5d?bivp3Uf~Q(fJycDmm? zKO#@`Ff{NsdYKtw3S*B}vV4AtPO*2~it0eX*We0H40VN=g|VCFYAEVKiaGH{xC2r* z!%c8A+yb}4a<~mv!0q&6I*ew}OqxZrX%5ZZ3@cgE-3fQW-Ea^4_E$QbIWUiopqJBW z?AuJmnaPEr5W@#o49G&0UG0GggH4ecQPmu1D|apMHn|wY)w2i8Et6dhvd<}IDmKQz zHo;rd!(N{^++N5qt%|kaaE(`PQ^mzaDYSEZnjoS?4tbmW=aHZoq{?SNHJh2B;(@{` zf>Z3v&@45cbct9N^W8?+qyWT&bYur?rum8wtR*$oaZ@LT<(80&PmjQmPIwd^qoe4h z-5B*a>;zjUY=<3mG%e_aCtw#HLocCYXEQN9lR#v@mCa9aHTk{ah)1qS8`r)qT1sjK z&4Xt;l}d@3_AKl>NAi9q`7$~-ZCoHVx-Q0f5Dr6XC%g=Y=r~%~35VcST1bncn~7C+ z+}lnuH3388gsiG?FyanJf^tmm8}JUKJ_yI)IGlht;VpQZ7Sj@1O3UbYI^jY1J4>VY z*#GX+Ji?; zgt$=&GK%EJKv0gaP(}7*nyQMYC`~jHiqpEJDb?LoNK7ruV~fJw1$N5%*j7J*Pl5G_ zv-FA%_>4|c1_*_<#^qyBS{Uld`Xzh?sq5A$y+mzO-@ox zKxoe5j8ye=ag66TgxF$4S`lB2TGS<|K@Ry?s-i$EX-YIL(F{Y@qXk8@(keQg&WNWb z+VO&f1X_;085mS63Di2SX9D4cn3}+OI}V_^v_|1)A4Fl zYOrgIn2lo~bqnTTE)K^$9DyS-A4lP6ETDC?p3b7P=^W~$S5g;kpzbY@f@ASg2KFmq zB^F{47Gntmdk>Y_`*8MmD_u+1(alPli3$Xi$PJOECON3$NHPms_aG3ZbrV#8n8HQ~ zCrcQ=#})J_xS>c8qyDHMq!no^tEEFZSqHBQbAwIS1QH8QR6lUmODYpjY z5c?ACysT|lW0uC@rH)N33}1Vs7f!><#JEpKHc50~4Q=eeTH2&+d!TAg7dZcs#+d(S z;T%Q4Y}(v`PU@v8)l*zve~jwJCa|qX56aj`=hAu9w;r3B=jYNE=Ifi4$PP_Vr&O9; z#rlB1Df+c1!a7AqB5zlzo%?*e9B7fl!FDx;TQS&y^QoUMjTsfjtJz$D5nO<6xDea% zDqKVZw3W`MK^mfA8rg)4@fuu$6e*0u>*xa7MiM*R91jZMW)@d9_C zCCk;?>XWlP;T|(}Y{M(?F0h?{T*SLk>DTqRiY}z>3}P>&SFy^B&Spn*M|aO=@rmpN zuEljAUMdfb2;@j=|giX~>z(LasnPvdnM@djFPz#KTiZ>e z*U`oF26{EU)+uJkTS|hLRB>7H$spcg)VOa^;{GtbhQ%Ep!>!EXZ7lJ&*LCZd9@S2l zuuP=PymK3Rv~l7SxXURjZJ;}_Oc6`Z=;8{OH`s|!!pQ%JM{U9d_*AEIG?AA4uD*`p z9%k1wxEG&=jCxPkIg-V6W;iyU(`EE}%I1y#`B4jB!2N8fW`je_`?1J%;)}|L&PP&x z@)90&ibI%B65`SApv27Y#FrIuf13Y1q3Ch2!oAUh)iO26N0lJIPH&-083=TD!QA1a zSwkF|o4+{L3h@N~ot?JvO?(UA#&_s)dK+CqZ{L9L;(PcHe4pMy@1cLCt7uB?WVtaq zNY1SEHZ@1T)u~t*MRw7lKzeN0j6-y+)K254ikgq{41R)V=}P(+dMCYW11qtW_&Gb& z_hZR+w|c1WTf@%43Q(|VTy9gkM5xl$rVa({6rV`#g1Rbqpp{KJsR_jB@<1@mMp<{z z+sfu=)((;rSfbJuv{K#n9R}BR7F^f!sfe7{C%{@4H5v-uM{Nf;>bEz+CC z=mCZE+9)F%6{8~&xsY6x(8Nf8k`}ipop!`58mw3}gbbyfbYr(g86>->MI?vh()Dx$ z9Xpc+R>ktPaZ9-b+ww_4!kRJU68a$B6dUAXomUwJ(#FktF1q$O8Al395eTFhGDs;Y zbBeZLAP`n_NomUE%A_D(&?Ni4k&vocIq1m?!z!g$t9oSrKP0-1)xbk^$D3pVnaC7e zK_-#OOi3}BiocNx=&WToj6P3L_Sdw!*n7C%t;qFscgm&{Tymp=Lj5PNbtPBLGCra#NBY6uZF z>Zkn)4V@&SNdGgetX`w&HL5@v;#K&{FBrX;-G8tAA z$-&pjVsg#&==edAT_X2p*T=(PB)c@eob|n(>_YWrc8&TjyGZ?zU80`F&+v2nk|dE# zGKM8gDZ3_}$kL~p)R0Zq@CPKHj`(`L2{V9N{*2C$VcQW@(uYn`Ce0^nWCxH zxHL@~pC+QYMsu6yF3lRvM$Kl;7R@7?r!;#sdo|B%UeLU#`9kv_&2L)JYP347UTfDT zYkO(?Xq&YWE!AGDU8cQ3dz1DS?cLgYwX3wNwfAe+YCE)hw5POR>x{Y)x=VHAbrW>c zbagtnu3blUx9L{sR_nIt9??Cf+os#D+o{{7+pT*^_po3(;=x6Dd>(}aE)1TCTssEa@aQ(Oxu0NN~4dRAyW4Ti93T`r2&Q)-;xdzU|HFEQ~ z7B0Ze=az7P;qK(ta2vTT+>_iMZZG#7_agTa_cC{wJIPX>b}`2Dd>rG#R{xd4?9lGQ(!WTZZp>9e)9z&JX5?@)>*< zpTigNQ~3&h8ehd<$-8-(Z|3LnKE9p5ieJPp=I`L|=hyL_{6>Bg{}8{6f0EzLKh3|y zAL3u(kMOVa$N2a7Q~YWE41bpYjQ^4UmH%BpAxYo_UN8y{VSq4L7%B`Ca)jZ+2q9m% zT$n6O6RL#iLY**6m?K;%gaj(wE!-=t5>^ZM3u}cAVZE?X*d#n8>=m99_6hri1HwV! zknoD|ns8KjLpUy+F@mwTaj@|+<3yv=c&+gsV~6oE<5uG~<96e-#(l>9#+QsQ8xI@5 zHGxTE(wR6DZ!(&!ri)AiO@mECO~XvXO(RVCrqQM`rbg2>rh80lO`WCOex#>&OFJ{i1W*%j(GS4?JHs5RBVBTte z+`Pm5g!xJHQ|A5V1LlL~L*`e^ubGdU-!Y#u|I30FyCuz%Z>h9YTWTz|mO9HU%L>cA zmisJgEDu;7w(PR(vFx=xXW3^tVR_&3t4PHD;>BXNI9er>W!*8SE4)`QkV z)>o`2tRGlEwGo@e*2~t%*3Wj4E!8&EHq4f3%eLj(@@&&=e%ngh7TXTnPTMZq3$_Ec zgSNxAS8YdZr);Nf-`Kvh{b2jq_KWQ|NiP{Cvm{D3DMd<`21!GtOetH+mGY#q(nP6T zs*ozB8PZItUYad6N+BsMMWi-qnRKIcv$R}VA>ARZk{*!ONuAOL>2Yb7v|D;wdRBT~ zdO>HYbwLM^;Zx7ic_BQ(+_Eq+E_DAeT z?C;wDVgJB>(tgVRqy1<5FZSOY;2;jcVRncPnl0M~fri znC}QVB93buOC8rau6L|(>~=ikIOF&#IXSs+a$#~^vOBpkxjA`m^3};plW$bV1U8;T NUu22;8GBE@`M+g!t7HHG literal 0 HcmV?d00001 diff --git a/4b. Dictionaries.playground/section-1.swift b/4b. Dictionaries.playground/section-1.swift index c901f6c..f395986 100644 --- a/4b. Dictionaries.playground/section-1.swift +++ b/4b. Dictionaries.playground/section-1.swift @@ -1,4 +1,5 @@ // ------------------------------------------------------------------------------------------------ +// Checked and updated September 2016 // Things to know: // // * Dictionaries store multiple values of the same type, each associated with a key which acts as @@ -59,7 +60,7 @@ airports["APL"] = nil // Here's another way to remove a value. The returned value is set to the value that was removed. // Again, this is optional in case there was no value to remove. In this case, the APL airport // was already removed, so the return value will be a nil optional: -var removedValue = airports.removeValueForKey("APL") +var removedValue = airports.removeValue(forKey: "APL") // ------------------------------------------------------------------------------------------------ // Iterating over a Dictionary diff --git a/4b. Dictionaries.playground/timeline.xctimeline b/4b. Dictionaries.playground/timeline.xctimeline index 372dfbb..2cb8bdf 100644 --- a/4b. Dictionaries.playground/timeline.xctimeline +++ b/4b. Dictionaries.playground/timeline.xctimeline @@ -3,10 +3,14 @@ version = "3.0"> + documentLocation = "#CharacterRangeLen=0&CharacterRangeLoc=4862&EndingColumnNumber=5&EndingLineNumber=17&StartingColumnNumber=4&StartingLineNumber=17&Timestamp=496705615.515135" + selectedRepresentationIndex = "0" + shouldTrackSuperviewWidth = "NO"> + documentLocation = "#CharacterRangeLen=11&CharacterRangeLoc=3423&EndingColumnNumber=12&EndingLineNumber=78&StartingColumnNumber=1&StartingLineNumber=78&Timestamp=496705615.515477" + selectedRepresentationIndex = "0" + shouldTrackSuperviewWidth = "NO"> From 3460f838610b8fe605e0553f8f32da802e3ddcc7 Mon Sep 17 00:00:00 2001 From: Christopher Bell Date: Tue, 27 Sep 2016 22:54:18 +0100 Subject: [PATCH 10/27] Updated to Swift 3 Some changes made --- .DS_Store | Bin 10244 -> 10244 bytes .../contents.xcplayground | 2 +- .../contents.xcworkspacedata | 7 +++++ .../UserInterfaceState.xcuserstate | Bin 0 -> 7167 bytes 5. Control Flow.playground/section-1.swift | 25 +++++++++--------- .../timeline.xctimeline | 4 ++- 6 files changed, 24 insertions(+), 14 deletions(-) create mode 100644 5. Control Flow.playground/playground.xcworkspace/contents.xcworkspacedata create mode 100644 5. Control Flow.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/.DS_Store b/.DS_Store index b028cd78de4f9fdad0822745fa7f7fb2e8a79610..a68f2fc3a3a0886b4d5c6ee86f261121ebd8efb0 100644 GIT binary patch delta 17 YcmZn(XbITBBFVzQz`(PaL-G$F04jt8WB>pF delta 17 XcmZn(XbITBBFXX}2sU#_{^0`vNFE4O diff --git a/5. Control Flow.playground/contents.xcplayground b/5. Control Flow.playground/contents.xcplayground index 18a12f6..8e39341 100644 --- a/5. Control Flow.playground/contents.xcplayground +++ b/5. Control Flow.playground/contents.xcplayground @@ -4,4 +4,4 @@ - + \ No newline at end of file diff --git a/5. Control Flow.playground/playground.xcworkspace/contents.xcworkspacedata b/5. Control Flow.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/5. Control Flow.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/5. Control Flow.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate b/5. Control Flow.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..75e40662f1389b6b244cd2531ba713f4a2269f3a GIT binary patch literal 7167 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 literal 0 HcmV?d00001 diff --git a/5. Control Flow.playground/section-1.swift b/5. Control Flow.playground/section-1.swift index 75753f2..71a623f 100644 --- a/5. Control Flow.playground/section-1.swift +++ b/5. Control Flow.playground/section-1.swift @@ -1,4 +1,5 @@ // ------------------------------------------------------------------------------------------------ +// Checked and updated September 2016 // Things to know: // // * Much of the control flow in Swift is similar to C-like languages, but there are some key @@ -59,7 +60,7 @@ indx // We can use an underscore if you don't need access to the loop constant: for _ in 1...10 { - println("do something") + print("do something") } // We can iterate over arrays @@ -78,7 +79,7 @@ for (animalName, legs) in numberOfLegs } // We can iterate over characters in a String -for character in "Hello" +for character in "Hello".characters { character } @@ -87,20 +88,20 @@ for character in "Hello" // // Note that the loop value is a variable, not a constant. In fact, they cannot be constant // because of the increment statement (++index) -for (var index = 0; index < 3; ++index) +for index in 0 ..< 3 { index } // The parenthesis are optional for the For-Condition-Increment loop: -for var index = 0; index < 3; ++index +for index in 0 ..< 3 { index } // Variables are scoped to the For-Condition-Increment construct. To alter this, pre-declare index var index = 3000 -for index = 0; index < 3; ++index +for index in 0 ..< 3 { index } @@ -113,15 +114,15 @@ index // Index holds 3 after running through the loop // through the loop: while index > 0 { - --index + index -= 1 } // Do-While loops also resemble their C-like language counterparts. They perform the condition // after each iteration through the loop. As a result, they always execute the code inside the // loop at least once: -do +repeat { - ++index + index += 1 } while (index < 3) // ------------------------------------------------------------------------------------------------ @@ -267,7 +268,7 @@ switch anotherPoint "On the y axis with an y value of \(y)" case (var x, let y): - ++x // We can modify the variable 'x', but not the constant 'y' + x += 1 // We can modify the variable 'x', but not the constant 'y' "Somewhere else on \(x), \(y)" } @@ -358,7 +359,7 @@ switch integerToDescribe var result = "" nameLoop: for name in names { - characterLoop: for character in name + characterLoop: for character in name.characters { theSwitch: switch character { @@ -377,7 +378,7 @@ result result = "" nameLoop: for name in names { - characterLoop: for character in name + characterLoop: for character in name.characters { theSwitch: switch character { @@ -397,7 +398,7 @@ result result = "" nameLoop: for name in names { - characterLoop: for character in name + characterLoop: for character in name.characters { theSwitch: switch character { diff --git a/5. Control Flow.playground/timeline.xctimeline b/5. Control Flow.playground/timeline.xctimeline index c1278f9..7c016be 100644 --- a/5. Control Flow.playground/timeline.xctimeline +++ b/5. Control Flow.playground/timeline.xctimeline @@ -3,7 +3,9 @@ version = "3.0"> + documentLocation = "#CharacterRangeLen=0&CharacterRangeLoc=11061&EndingColumnNumber=5&EndingLineNumber=3&StartingColumnNumber=4&StartingLineNumber=3&Timestamp=496706041.965868" + selectedRepresentationIndex = "0" + shouldTrackSuperviewWidth = "NO"> From 42ab4ea06900f9159f83ca8fc21c982bd08c015b Mon Sep 17 00:00:00 2001 From: Christopher Bell Date: Tue, 27 Sep 2016 23:10:04 +0100 Subject: [PATCH 11/27] Updated to Swift 3 Some changed made --- .DS_Store | Bin 10244 -> 10244 bytes 6. Functions.playground/contents.xcplayground | 2 +- .../contents.xcworkspacedata | 7 +++ .../UserInterfaceState.xcuserstate | Bin 0 -> 7139 bytes 6. Functions.playground/section-1.swift | 51 +++++++++--------- 6. Functions.playground/timeline.xctimeline | 4 +- 6 files changed, 38 insertions(+), 26 deletions(-) create mode 100644 6. Functions.playground/playground.xcworkspace/contents.xcworkspacedata create mode 100644 6. Functions.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/.DS_Store b/.DS_Store index a68f2fc3a3a0886b4d5c6ee86f261121ebd8efb0..ee984322055ddcd742c74519319a8ac5cdb6a4fc 100644 GIT binary patch delta 42 ycmZn(XbG6$I9U^hRb(qa%MJkfUkf_` delta 41 tcmZn(XbG6$UDU^hRb;$|KJH%^ZKV8Fnzd4^;@+r$RD&Fl()*#T715WN5Z diff --git a/6. Functions.playground/contents.xcplayground b/6. Functions.playground/contents.xcplayground index 18a12f6..8e39341 100644 --- a/6. Functions.playground/contents.xcplayground +++ b/6. Functions.playground/contents.xcplayground @@ -4,4 +4,4 @@ - + \ No newline at end of file diff --git a/6. Functions.playground/playground.xcworkspace/contents.xcworkspacedata b/6. Functions.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/6. Functions.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/6. Functions.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate b/6. Functions.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..7a57707890fa8528597d1db9ec6ca3864de83b28 GIT binary patch literal 7139 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 W&&EF=ZsR~{$M16GH}W@r&%XixOTyFu literal 0 HcmV?d00001 diff --git a/6. Functions.playground/section-1.swift b/6. Functions.playground/section-1.swift index b281d2d..3eb6703 100644 --- a/6. Functions.playground/section-1.swift +++ b/6. Functions.playground/section-1.swift @@ -1,4 +1,5 @@ // ------------------------------------------------------------------------------------------------ +// Checked and updated September 2016 // Things to know: // // * Like most other languages, functions contain units of code to perform a task, but there are @@ -25,7 +26,7 @@ func sayHello(personName: String) -> String } // If we call the function, we'll receive the greeting -sayHello("Peter Parker") +sayHello(personName: "Peter Parker") // Multiple input parameters are separated by a comma func halfOpenRangeLength(start: Int, end: Int) -> Int @@ -87,7 +88,7 @@ addSeventeen(toNumber: 42) // // The following declaration creates an internal parameter named "action" as well as an external // parameter named "action": -func kangaroosCan(#action: String) -> String +func kangaroosCan(action: String) -> String { return "A Kangaroo can \(action)" } @@ -108,7 +109,7 @@ func addMul(firstAdder: Int, secondAdder: Int, multiplier: Int = 1) -> Int } // We can call with just two parameters to add them together -addMul(1, 2) +addMul(firstAdder: 1, secondAdder: 2) // Default parameter values and external names // @@ -119,7 +120,7 @@ addMul(1, 2) // // Therefore, when calling the function and specifying a value for the defaulted parameter, we // must provide the default parameter's external name: -addMul(1, 2, multiplier: 9) +addMul(firstAdder: 1, secondAdder: 2, multiplier: 9) // We can opt out of the automatic external name for default parameter values by specify an // external name of "_" like so: @@ -129,10 +130,10 @@ func anotherAddMul(firstAdder: Int, secondAdder: Int, _ multiplier: Int = 1) -> } // Here, we call without the third parameter as before: -anotherAddMul(1, 2) +anotherAddMul(firstAdder: 1, secondAdder: 2) // And now we can call with an un-named third parameter: -anotherAddMul(1, 2, 9) +anotherAddMul(firstAdder: 1, secondAdder: 2, 9) // ------------------------------------------------------------------------------------------------ // Variadic Parameters @@ -158,12 +159,12 @@ func arithmeticMean(numbers: Double...) -> Double // Let's call it with a few parameter lengths. Note that we can call with no parameters, since that // meets the criteria of a variadic parameter (zero or more). arithmeticMean() -arithmeticMean(1) -arithmeticMean(1, 2) -arithmeticMean(1, 2, 3) -arithmeticMean(1, 2, 3, 4) -arithmeticMean(1, 2, 3, 4, 5) -arithmeticMean(1, 2, 3, 4, 5, 6) +arithmeticMean(numbers: 1) +arithmeticMean(numbers: 1, 2) +arithmeticMean(numbers: 1, 2, 3) +arithmeticMean(numbers: 1, 2, 3, 4) +arithmeticMean(numbers: 1, 2, 3, 4, 5) +arithmeticMean(numbers: 1, 2, 3, 4, 5, 6) // If we want to use variadic parameters and default parameter values, we can do so by making sure // that the default parameters come before the variadic, at the end of the parameter list: @@ -185,11 +186,11 @@ anotherArithmeticMean() // default parameter values. In this case, it helps us recognize where the defalt parameters leave // off and the variadic parameters begin: anotherArithmeticMean(initialTotal: 1) -anotherArithmeticMean(initialTotal: 1, 2) -anotherArithmeticMean(initialTotal: 1, 2, 3) -anotherArithmeticMean(initialTotal: 1, 2, 3, 4) -anotherArithmeticMean(initialTotal: 1, 2, 3, 4, 5) -anotherArithmeticMean(initialTotal: 1, 2, 3, 4, 5, 6) +anotherArithmeticMean(initialTotal: 1, numbers: 2) +anotherArithmeticMean(initialTotal: 1, numbers: 2, 3) +anotherArithmeticMean(initialTotal: 1, numbers: 2, 3, 4) +anotherArithmeticMean(initialTotal: 1, numbers: 2, 3, 4, 5) +anotherArithmeticMean(initialTotal: 1, numbers: 2, 3, 4, 5, 6) // Variadic parameters with external parameter names only apply their external name to the first // variadic parameter specified in the function call (if present.) @@ -217,14 +218,16 @@ yetAnotherArithmeticMean(initialTotal: 1, values: 2, 3, 4, 5, 6) // Constant and variable parameters // // All function parameters are constant by default. To make them variable, add the var introducer: -func padString(var str: String, pad: Character, count: Int) -> String +func padString(str: String, pad: Character, count: Int) -> String { - str = Array(count: count, repeatedValue: pad) + str + var str = str + str = String(repeating: String(pad), count: count) + str + return str } var paddedString = "padded with dots" -padString(paddedString, ".", 10) +padString(str: paddedString, pad: ".", count: 10) // Note that the function does not modify the caller's copy of the string that was passed in // because the value is still passed by value: @@ -239,7 +242,7 @@ paddedString // Note that inout parameters cannot be variadic or have default parameter values. // // We'll write a standard swap function to exercise this: -func swap(inout a: Int, inout b: Int) +func swap(a: inout Int, b: inout Int) { let tmp = a a = b @@ -298,10 +301,10 @@ doMul(4, 5) // // This additional syntactic decoration has a purpose, but it doesn't affect the underlying // function type, which remains: (Int, Int) -> Int -let doAddMul: (a: Int, b: Int, Int) -> Int = addMul +let doAddMul: (_ a: Int, _ b: Int, Int) -> Int = addMul // Calling the function now requires external names for the first two parameters -doAddMul(a: 4, b: 2, 55) +doAddMul(4, 2, 55) // We can pass function types as parameters to funcions, too. // @@ -314,7 +317,7 @@ func doDoMul(doMulFunc: (Int, Int) -> Int, a: Int, b: Int) -> Int // We can now pass the function (along with a couple parameters to call it with) to another // function: -doDoMul(doMul, 5, 5) +doDoMul(doMulFunc: doMul, a: 5, b: 5) // We can also return function types. // diff --git a/6. Functions.playground/timeline.xctimeline b/6. Functions.playground/timeline.xctimeline index d07a687..ede1119 100644 --- a/6. Functions.playground/timeline.xctimeline +++ b/6. Functions.playground/timeline.xctimeline @@ -3,7 +3,9 @@ version = "3.0"> + documentLocation = "#CharacterRangeLen=0&CharacterRangeLoc=13442&EndingColumnNumber=5&EndingLineNumber=5&StartingColumnNumber=4&StartingLineNumber=4&Timestamp=496706989.211164" + selectedRepresentationIndex = "0" + shouldTrackSuperviewWidth = "NO"> From 9d3d1ae66a66e6bea1b558a1721ef212ca27f072 Mon Sep 17 00:00:00 2001 From: Christopher Bell Date: Tue, 27 Sep 2016 23:16:39 +0100 Subject: [PATCH 12/27] Updated to Swift 3 Some changes made --- .DS_Store | Bin 10244 -> 10244 bytes 7. Closures.playground/contents.xcplayground | 2 +- .../contents.xcworkspacedata | 7 +++++ .../UserInterfaceState.xcuserstate | Bin 0 -> 7133 bytes 7. Closures.playground/section-1.swift | 28 ++++++++++-------- 7. Closures.playground/timeline.xctimeline | 4 ++- 6 files changed, 26 insertions(+), 15 deletions(-) create mode 100644 7. Closures.playground/playground.xcworkspace/contents.xcworkspacedata create mode 100644 7. Closures.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/.DS_Store b/.DS_Store index ee984322055ddcd742c74519319a8ac5cdb6a4fc..42a8ef65642354bbb62815211a621649af6c6a55 100644 GIT binary patch delta 17 YcmZn(XbISGN0Nnsfq`%H14$J=05)I+J^%m! delta 17 XcmZn(XbISGN0Q|~5Nv)Rslo>UQ|<{Y diff --git a/7. Closures.playground/contents.xcplayground b/7. Closures.playground/contents.xcplayground index 18a12f6..8e39341 100644 --- a/7. Closures.playground/contents.xcplayground +++ b/7. Closures.playground/contents.xcplayground @@ -4,4 +4,4 @@ - + \ No newline at end of file diff --git a/7. Closures.playground/playground.xcworkspace/contents.xcworkspacedata b/7. Closures.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/7. Closures.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/7. Closures.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate b/7. Closures.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..2d32deb7e394085800276cfea600fc4f35243e9a GIT binary patch literal 7133 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 literal 0 HcmV?d00001 diff --git a/7. Closures.playground/section-1.swift b/7. Closures.playground/section-1.swift index b46fb84..9d34c06 100644 --- a/7. Closures.playground/section-1.swift +++ b/7. Closures.playground/section-1.swift @@ -1,4 +1,5 @@ // ------------------------------------------------------------------------------------------------ +// Checked and updated September 2016 // Things to know: // // * Closures are blocks of code. @@ -34,10 +35,11 @@ // outside of those curly braces: let names = ["Chris", "Alex", "Ewa", "Barry", "Daniella"] var reversed = [String]() -reversed = names.sorted({ - (s1: String, s2: String) -> Bool in - return s1 > s2 -}) + +reversed = names.sorted() { + (s1: String, s2: String) -> Bool in + return s1 > s2 +} // ------------------------------------------------------------------------------------------------ // Inferring Type from Context @@ -49,29 +51,29 @@ reversed = names.sorted({ // call to sort. // // The following call is identical to the one above with the exception that "-> Bool" was removed: -reversed = names.sorted({ +reversed = names.sorted() { (s1: String, s2: String) in return s1 > s2 -}) +} // Just as the return type can be inferred, so can the parameter types. This allows us to simplify // the syntax a bit further by removing the type annotations from the closure's parameters. // // The following call is identical to the one above with the exception that the parameter type // annotations (": String") have been removed: -reversed = names.sorted({ +reversed = names.sorted() { (s1, s2) in return s1 > s2 -}) +} // Since all types can be inferred and we're not using any type annotation on the parameters, // we can simplify a bit further by removing the paranthesis around the parameters. We'll also put // it all on a single line, since it's a bit more clear now: -reversed = names.sorted({ s1, s2 in return s1 > s2 }) +reversed = names.sorted() { s1, s2 in return s1 > s2 } // If the closuere has only a single expression, then the return statement is also inferred. When // this is the case, the closure returns the value of the single expression: -reversed = names.sorted({ s1, s2 in s1 > s2 }) +reversed = names.sorted() { s1, s2 in s1 > s2 } // We're not done simplifying yet. It turns out we can get rid of the parameters as well. If we // remove the parameters, we can still access them because Swift provides shorthand names to @@ -85,7 +87,7 @@ reversed = names.sorted({ s1, s2 in s1 > s2 }) // This won't compile because you're not allowed to use shorthand names if you specify the // parameter list. Therefore, we need to remove those in order to get it to compile. This makes // for a very short inline closure: -reversed = names.sorted({ $0 > $1 }) +reversed = names.sorted() { $0 > $1 } // Interestingly enough, the operator < for String types is defined as: // @@ -96,12 +98,12 @@ reversed = names.sorted({ $0 > $1 }) // exactly this. // // Here's what that looks like: -reversed = names.sorted(>) +reversed = names.sorted() // If you want to just sort a mutable copy of an array (in place) you can use the sort() method var mutableCopyOfNames = names -mutableCopyOfNames.sort(>) +mutableCopyOfNames.sorted(by: >) mutableCopyOfNames diff --git a/7. Closures.playground/timeline.xctimeline b/7. Closures.playground/timeline.xctimeline index 435340c..3f3c9a9 100644 --- a/7. Closures.playground/timeline.xctimeline +++ b/7. Closures.playground/timeline.xctimeline @@ -3,7 +3,9 @@ version = "3.0"> + documentLocation = "#CharacterRangeLen=0&CharacterRangeLoc=8015&EndingColumnNumber=5&EndingLineNumber=15&StartingColumnNumber=4&StartingLineNumber=15&Timestamp=496707385.938404" + selectedRepresentationIndex = "0" + shouldTrackSuperviewWidth = "NO"> From 424695f11b57da8413692e6aa70e679a8938abec Mon Sep 17 00:00:00 2001 From: Christopher Bell Date: Tue, 27 Sep 2016 23:19:28 +0100 Subject: [PATCH 13/27] Updated to Swift 3 Some changes made --- .DS_Store | Bin 10244 -> 10244 bytes .../contents.xcplayground | 2 +- .../contents.xcworkspacedata | 7 ++++ .../UserInterfaceState.xcuserstate | Bin 0 -> 6962 bytes 8. Enumerations.playground/section-1.swift | 38 +++++++++--------- .../timeline.xctimeline | 4 +- 6 files changed, 31 insertions(+), 20 deletions(-) create mode 100644 8. Enumerations.playground/playground.xcworkspace/contents.xcworkspacedata create mode 100644 8. Enumerations.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/.DS_Store b/.DS_Store index 42a8ef65642354bbb62815211a621649af6c6a55..e64a9a5dddb1518e7439d35965e365d9a0051852 100644 GIT binary patch delta 17 YcmZn(XbIS0AjQJKz`(!RMCt-B04)mylmGw# delta 17 XcmZn(XbIS0AjR?@2sWEYUEl=(N|OkI diff --git a/8. Enumerations.playground/contents.xcplayground b/8. Enumerations.playground/contents.xcplayground index 18a12f6..8e39341 100644 --- a/8. Enumerations.playground/contents.xcplayground +++ b/8. Enumerations.playground/contents.xcplayground @@ -4,4 +4,4 @@ - + \ No newline at end of file diff --git a/8. Enumerations.playground/playground.xcworkspace/contents.xcworkspacedata b/8. Enumerations.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/8. Enumerations.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/8. Enumerations.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate b/8. Enumerations.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..59e5c3cbfa2b48f35e3626c90951300e221b7fc3 GIT binary patch literal 6962 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 literal 0 HcmV?d00001 diff --git a/8. Enumerations.playground/section-1.swift b/8. Enumerations.playground/section-1.swift index acf994d..04c71f3 100644 --- a/8. Enumerations.playground/section-1.swift +++ b/8. Enumerations.playground/section-1.swift @@ -1,4 +1,5 @@ // ------------------------------------------------------------------------------------------------ +// Checked and updated September 2016 // Things to know: // // * Enumerations in Swift are different from their popular counterparts in C-like languages. @@ -21,32 +22,33 @@ // // Unlike their C counterparts, the members of the enumeration below are not integer values (0, // 1, 2, etc.) Instead, each member is a fully-fledged value in its own right. +// In Swift 3, enums now have members in lowercase enum Planet { - case Mercury - case Venus - case Earth - case Mars - case Jupiter - case Saturn - case Uranus - case Neptune + case mercury + case venus + case earth + case mars + case jupiter + case saturn + case uranus + case neptune } // You can also combine members onto a single line if you prefer, or mix them up. This has no // effect on the enumeration itself. enum CompassPoint { - case North, South - case East, West + case north, south + case east, west } // Let's store an enumeration value into a variable. We'll let the compiler infer the type: -var directionToHead = CompassPoint.West +var directionToHead = CompassPoint.west // Now that directionToHead has a CompassPoint type (which was inferred) we can set it to a // different CompassPoint value using a shorter syntax: -directionToHead = .East +directionToHead = .east // We can use a switch to match values from an enumeration. // @@ -54,13 +56,13 @@ directionToHead = .East // enumeration only has 4 values, so as long as we cover all 4, we don't need the default case. switch directionToHead { - case .North: + case .north: "North" - case .South: + case .south: "South" - case .East: + case .east: "East" - case .West: + case .west: "West" } @@ -150,11 +152,11 @@ FamilyPet.Ferret.rawValue var pet = FamilyPet(rawValue: "Ferret") // Let's verify this: -if pet != .None { "We have a pet!" } +if pet != .none { "We have a pet!" } else { "No pet :(" } // An example of when a raw doesn't translate to an enum, leaving us with a nil optional: pet = FamilyPet(rawValue: "Snake") -if pet != .None { "We have a pet" } +if pet != .none { "We have a pet" } else { "No pet :(" } diff --git a/8. Enumerations.playground/timeline.xctimeline b/8. Enumerations.playground/timeline.xctimeline index 2e9ebb7..c0fc5c7 100644 --- a/8. Enumerations.playground/timeline.xctimeline +++ b/8. Enumerations.playground/timeline.xctimeline @@ -3,7 +3,9 @@ version = "3.0"> + documentLocation = "#CharacterRangeLen=0&CharacterRangeLoc=5615&EndingColumnNumber=5&EndingLineNumber=21&StartingColumnNumber=4&StartingLineNumber=21&Timestamp=496707552.497048" + selectedRepresentationIndex = "0" + shouldTrackSuperviewWidth = "NO"> From 11b989360e0fb8e060007b8d0cb534b750c9abcf Mon Sep 17 00:00:00 2001 From: Christopher Bell Date: Tue, 27 Sep 2016 23:20:37 +0100 Subject: [PATCH 14/27] Checked for Swift 3 compatibility No changes --- .DS_Store | Bin 10244 -> 10244 bytes .../contents.xcplayground | 2 +- .../contents.xcworkspacedata | 7 +++++++ .../UserInterfaceState.xcuserstate | Bin 0 -> 7231 bytes .../section-1.swift | 1 + .../timeline.xctimeline | 4 +++- 6 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 9. Classes and Structures.playground/playground.xcworkspace/contents.xcworkspacedata create mode 100644 9. Classes and Structures.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/.DS_Store b/.DS_Store index e64a9a5dddb1518e7439d35965e365d9a0051852..bcfcdf39deee74e518bda317acc6586467f2c0d2 100644 GIT binary patch delta 17 YcmZn(XbIRbLyCogfk9yN9H|Um05ZV@{Qv*} delta 17 XcmZn(XbIRbLyF};5Nw_!mB9-DP(ujm diff --git a/9. Classes and Structures.playground/contents.xcplayground b/9. Classes and Structures.playground/contents.xcplayground index 18a12f6..8e39341 100644 --- a/9. Classes and Structures.playground/contents.xcplayground +++ b/9. Classes and Structures.playground/contents.xcplayground @@ -4,4 +4,4 @@ - + \ No newline at end of file diff --git a/9. Classes and Structures.playground/playground.xcworkspace/contents.xcworkspacedata b/9. Classes and Structures.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/9. Classes and Structures.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/9. Classes and Structures.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate b/9. Classes and Structures.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..aa6bd89433aafa2e04bf2442704ebe7668935166 GIT binary patch literal 7231 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 + documentLocation = "#CharacterRangeLen=0&CharacterRangeLoc=5589&EndingColumnNumber=5&EndingLineNumber=4&StartingColumnNumber=4&StartingLineNumber=4&Timestamp=496707619.317768" + selectedRepresentationIndex = "0" + shouldTrackSuperviewWidth = "NO"> From f10fc03eb644f8dd5798462b6e3d729c14c823bb Mon Sep 17 00:00:00 2001 From: Christopher Bell Date: Tue, 27 Sep 2016 23:22:21 +0100 Subject: [PATCH 15/27] Checked for Swift 3 compatibility No changes --- .DS_Store | Bin 10244 -> 10244 bytes .../contents.xcplayground | 2 +- .../contents.xcworkspacedata | 7 +++++++ .../UserInterfaceState.xcuserstate | Bin 0 -> 7151 bytes 10. Properties.playground/section-1.swift | 1 + 10. Properties.playground/timeline.xctimeline | 4 +++- 6 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 10. Properties.playground/playground.xcworkspace/contents.xcworkspacedata create mode 100644 10. Properties.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/.DS_Store b/.DS_Store index bcfcdf39deee74e518bda317acc6586467f2c0d2..0505011b6f9f93eac3368fddd959a5c31f348cbe 100644 GIT binary patch delta 17 YcmZn(XbIR5CcwhLz#zCeN??^Z04}KnvH$=8 delta 17 XcmZn(XbIR5CcyF^2sTFvtP%$ROeF}N diff --git a/10. Properties.playground/contents.xcplayground b/10. Properties.playground/contents.xcplayground index 18a12f6..8e39341 100644 --- a/10. Properties.playground/contents.xcplayground +++ b/10. Properties.playground/contents.xcplayground @@ -4,4 +4,4 @@ - + \ No newline at end of file diff --git a/10. Properties.playground/playground.xcworkspace/contents.xcworkspacedata b/10. Properties.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/10. Properties.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/10. Properties.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate b/10. Properties.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..6391435d08578dc4a183edb421b61c8fa51b558b GIT binary patch literal 7151 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 literal 0 HcmV?d00001 diff --git a/10. Properties.playground/section-1.swift b/10. Properties.playground/section-1.swift index e63507f..56731ec 100644 --- a/10. Properties.playground/section-1.swift +++ b/10. Properties.playground/section-1.swift @@ -1,4 +1,5 @@ // ------------------------------------------------------------------------------------------------ +// Checked September 2016 // Things to know: // // * Properties store values in classes, structures and enumerations. diff --git a/10. Properties.playground/timeline.xctimeline b/10. Properties.playground/timeline.xctimeline index 48b1d0d..4beb005 100644 --- a/10. Properties.playground/timeline.xctimeline +++ b/10. Properties.playground/timeline.xctimeline @@ -3,7 +3,9 @@ version = "3.0"> + documentLocation = "#CharacterRangeLen=0&CharacterRangeLoc=10202&EndingColumnNumber=5&EndingLineNumber=3&StartingColumnNumber=4&StartingLineNumber=3&Timestamp=496707723.358648" + selectedRepresentationIndex = "0" + shouldTrackSuperviewWidth = "NO"> From cf9ff48b4b8f333eac6b8e79fb68ad8a5dc7503a Mon Sep 17 00:00:00 2001 From: Christopher Bell Date: Tue, 27 Sep 2016 23:26:00 +0100 Subject: [PATCH 16/27] Updated to Swift 3 Some changes --- .DS_Store | Bin 10244 -> 10244 bytes 11. Methods.playground/contents.xcplayground | 2 +- .../contents.xcworkspacedata | 7 ++++ .../UserInterfaceState.xcuserstate | Bin 0 -> 7133 bytes 11. Methods.playground/section-1.swift | 31 +++++++++--------- 11. Methods.playground/timeline.xctimeline | 4 ++- 6 files changed, 27 insertions(+), 17 deletions(-) create mode 100644 11. Methods.playground/playground.xcworkspace/contents.xcworkspacedata create mode 100644 11. Methods.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/.DS_Store b/.DS_Store index 0505011b6f9f93eac3368fddd959a5c31f348cbe..639dd990266c0667a0778b1380d36c4bc2e71547 100644 GIT binary patch delta 17 YcmZn(XbIS`NPvZbfk9~VGJ!a805aDE{{R30 delta 17 XcmZn(XbIS`NPy)(5Nuv15GM`*P)!Kw diff --git a/11. Methods.playground/contents.xcplayground b/11. Methods.playground/contents.xcplayground index 18a12f6..8e39341 100644 --- a/11. Methods.playground/contents.xcplayground +++ b/11. Methods.playground/contents.xcplayground @@ -4,4 +4,4 @@ - + \ No newline at end of file diff --git a/11. Methods.playground/playground.xcworkspace/contents.xcworkspacedata b/11. Methods.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/11. Methods.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/11. Methods.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate b/11. Methods.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..764e784448c733d7ba68faf0dd8dbbdd7abac4cb GIT binary patch literal 7133 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 literal 0 HcmV?d00001 diff --git a/11. Methods.playground/section-1.swift b/11. Methods.playground/section-1.swift index bbe6559..e4b7fcd 100644 --- a/11. Methods.playground/section-1.swift +++ b/11. Methods.playground/section-1.swift @@ -1,4 +1,5 @@ // ------------------------------------------------------------------------------------------------ +// Checked and updated September 2016 // Things to know: // // * Methods can be in the form of Instance Methods, which apply to a given instance of a class @@ -45,7 +46,7 @@ class Counter // No parameters func increment() { - count++ + count += 1 } // One parameter, no external parameter name needed by caller @@ -80,7 +81,7 @@ class Counter // Two parameters. Using the external parameter shorthand ("#") to force caller to use // external parameter name on first parameter and defaulting to shared local/external names // for the rest. - func addTwiceWithExternalSpecified2(#first: Int, second: Int) + func addTwiceWithExternalSpecified2(first: Int, second: Int) { count += first count += second @@ -97,12 +98,12 @@ class Counter // Now let's see how we call each of those functions var counter = Counter() counter.increment() -counter.incrementBy(4) +counter.incrementBy(amount: 4) counter.addValueTo(value: 4) -counter.addTwiceWithExternalImplied(50, second: 4) +counter.addTwiceWithExternalImplied(first: 50, second: 4) counter.addTwiceWithExternalSpecified(a: 50, b: 4) counter.addTwiceWithExternalSpecified2(first: 10, second: 10) -counter.addTwiceWithExternalSpecified3(10, 10) +counter.addTwiceWithExternalSpecified3(first: 10, 10) counter.count // The 'self' property refers to the current instance of a class, structure or enumeration. For @@ -160,17 +161,17 @@ struct Point3 // enumeration: enum TriStateSwitch { - case Off, Low, High + case off, low, high mutating func next() { switch self { - case Off: - self = Low - case Low: - self = High - case High: - self = Off + case .off: + self = .low + case .low: + self = .high + case .high: + self = .off } } } @@ -199,7 +200,7 @@ struct LevelTracker } mutating func advanceToLevel(level: Int) -> Bool { - if LevelTracker.levelIsUnlocked(level) + if LevelTracker.levelIsUnlocked(level: level) { currentLevel = level return true @@ -212,7 +213,7 @@ struct LevelTracker } // To call a type method, use the type name, not the instance name: -LevelTracker.levelIsUnlocked(3) +LevelTracker.levelIsUnlocked(level: 3) // If we attempt to use an instance to call a type method, we'll get an error var levelTracker = LevelTracker() @@ -231,4 +232,4 @@ class SomeOtherClass } // We call class type methods with the type name just as we do for structures and enumerations: -SomeOtherClass.isGreaterThan100(105) +SomeOtherClass.isGreaterThan100(value: 105) diff --git a/11. Methods.playground/timeline.xctimeline b/11. Methods.playground/timeline.xctimeline index f894cb8..ad36c1f 100644 --- a/11. Methods.playground/timeline.xctimeline +++ b/11. Methods.playground/timeline.xctimeline @@ -3,7 +3,9 @@ version = "3.0"> + documentLocation = "#CharacterRangeLen=0&CharacterRangeLoc=6395&EndingColumnNumber=5&EndingLineNumber=9&StartingColumnNumber=4&StartingLineNumber=9&Timestamp=496707947.258279" + selectedRepresentationIndex = "0" + shouldTrackSuperviewWidth = "NO"> From 78cc6c594983bcbc3fbe99f661c6847d25214622 Mon Sep 17 00:00:00 2001 From: Christopher Bell Date: Wed, 28 Sep 2016 12:41:37 +0100 Subject: [PATCH 17/27] Checked for Swift 3 compatibility No changes --- .DS_Store | Bin 10244 -> 10244 bytes .../contents.xcworkspacedata | 7 +++++++ .../UserInterfaceState.xcuserstate | Bin 0 -> 7027 bytes .../contents.xcplayground | 2 +- .../contents.xcworkspacedata | 7 +++++++ .../UserInterfaceState.xcuserstate | Bin 0 -> 7072 bytes 13. Inheritance.playground/section-1.swift | 1 + .../timeline.xctimeline | 4 +++- 8 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 12. Subscripts.playground/playground.xcworkspace/contents.xcworkspacedata create mode 100644 12. Subscripts.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 13. Inheritance.playground/playground.xcworkspace/contents.xcworkspacedata create mode 100644 13. Inheritance.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/.DS_Store b/.DS_Store index 639dd990266c0667a0778b1380d36c4bc2e71547..3e3f695d4aaa3bd9c90612917b715bd492303424 100644 GIT binary patch delta 26 fcmZn(XbITxMSz8YfkAlk4}ky>Lu9j$;0`eWZixp~ delta 26 dcmZn(XbITxMS$f$5KR6d5CCRu_7U761^~>I4<-Nr diff --git a/12. Subscripts.playground/playground.xcworkspace/contents.xcworkspacedata b/12. Subscripts.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/12. Subscripts.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/12. Subscripts.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate b/12. Subscripts.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..fed435b0fb7dc56afe2fbef510b7b4a02283fdda GIT binary patch literal 7027 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 - + \ No newline at end of file diff --git a/13. Inheritance.playground/playground.xcworkspace/contents.xcworkspacedata b/13. Inheritance.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/13. Inheritance.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/13. Inheritance.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate b/13. Inheritance.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..a41649c680a4ff4789edb99244b50e94475b9640 GIT binary patch literal 7072 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 I|Fy07Kg}A8OaK4? literal 0 HcmV?d00001 diff --git a/13. Inheritance.playground/section-1.swift b/13. Inheritance.playground/section-1.swift index b17743d..c4cbdff 100644 --- a/13. Inheritance.playground/section-1.swift +++ b/13. Inheritance.playground/section-1.swift @@ -1,4 +1,5 @@ // ------------------------------------------------------------------------------------------------ +// Checked September 2016 // Things to know: // // * There is no default base class for Swift objects. Any class that doesn't derive from diff --git a/13. Inheritance.playground/timeline.xctimeline b/13. Inheritance.playground/timeline.xctimeline index 23147a5..4f6fbf6 100644 --- a/13. Inheritance.playground/timeline.xctimeline +++ b/13. Inheritance.playground/timeline.xctimeline @@ -3,7 +3,9 @@ version = "3.0"> + documentLocation = "#CharacterRangeLen=0&CharacterRangeLoc=4456&EndingColumnNumber=5&EndingLineNumber=8&StartingColumnNumber=4&StartingLineNumber=8&Timestamp=496755665.442609" + selectedRepresentationIndex = "0" + shouldTrackSuperviewWidth = "NO"> From 16b41f852b152f937f3794b29b72b2c20455bd67 Mon Sep 17 00:00:00 2001 From: Christopher Bell Date: Wed, 28 Sep 2016 12:43:04 +0100 Subject: [PATCH 18/27] Updated to Swift 3 Small update --- .DS_Store | Bin 10244 -> 10244 bytes .../contents.xcplayground | 2 +- .../contents.xcworkspacedata | 7 +++++++ .../UserInterfaceState.xcuserstate | Bin 0 -> 7187 bytes .../section-1.swift | 5 +++-- .../timeline.xctimeline | 4 +++- 6 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 14a. Initialization.playground/playground.xcworkspace/contents.xcworkspacedata create mode 100644 14a. Initialization.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/.DS_Store b/.DS_Store index 3e3f695d4aaa3bd9c90612917b715bd492303424..a66e12e7eedc38fc96302964d6e1b25ab6bba873 100644 GIT binary patch delta 57 zcmZn(XbG6$gHU^hRb@@5`^8H_9p3=E=^eFR-5_ek<@UN6YQx0zkx7Yi#;m_cK5 Mfr!@TCn8sv0MZx_>i_@% delta 46 zcmZn(XbG6$I9U^hRb(q - + \ No newline at end of file diff --git a/14a. Initialization.playground/playground.xcworkspace/contents.xcworkspacedata b/14a. Initialization.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/14a. Initialization.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/14a. Initialization.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate b/14a. Initialization.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..c6fec13b79d2ae6c171ab7d1b583b066bcf17328 GIT binary patch literal 7187 zcmcIod3;pWz5o5rEV(mxmOFE2h9x4=1lh7fLWqD#NFoS?B?J-zj5jlvWMDEAXC^|x zzz-0`okcBGizHw{K&dNMaeLKPZL3eQYE{&(YPHq2TC0e>bLVCzjK%l-=Ov#{a_>Fo z{LXLv{=Vn5b%jImL~-$}fWW{2MlgYyZD7=#cexsihoX_@ylC4>HIRt6d;*`s-{BwdPxuTzhkwBr@Nf7MzJgPTXhahVD53*B zI2_N%T+G9KEWko6$4NLB=iz)@fQ`5in{W{>#%63mKVFI}upKYM7{)PyYw%jU4zI@> z@J74|x8Zi&fqSqI`*APcgZJY7_z3$6w=%_zJ#;uj5N;$2EWt&Ik{JJm?SFXc_2JfWh#W^#4G#7Sk-3ntdq6c^M? zpHx#&S3RkIdfBAvx=HmFsf~S*4LSQ@2n>Z`Fq}+erYsWn!8tGj&V`X=AqP3>TpHn* zhAvP8e1p1RC=rdNwrg52JMNd9sn^A!NHDsZe;Hn@u28ze1G5_wN4VW^CHrw0#~m{s@}U3v&~MS+eOFN(mZ`Zb08X23wd~Fg%X9C4lkUSRy8G|9%g6~xYzn%Cb?-uYG5`jfSkKv4m7}A zmy{Mpy_Qv(irL&9Y)whNg zh2kM@>+}vKrUVjdY=IJKSC`EQ1=Z?scxF7_t@1n=S{(?e@pv@WQyqy!c^YtUFAfD0 z9e!!lx8yadVUAU5FjHV|_2akyv7#>jrIvNY`8g#MN+$IRxm9hD{ApfSGGS7FPI0du zgCMAWNlr(hHpFu)8sXOLg&?eevZW1;gWoJEFNNST$k`7oVHJd-6Cx0WF3O?v=zPkh zJQ_t8?1vb{!2#WTcqBB@Xd1&KIF1jW%RM(@xmJhC#IKL>WbsSq@egxjK{ciZ)AhMf zX`3F6Bx2EUm}jY9%0IJs_0@ypO_9)L-RjIBFSpQ&kQ(z#)6SfpAxCV&bpG)3jSO^xuTaxM8mbsu%!<=xueGF5t!P#a1(5U?KGb9selTph>EF%N)NzJo~yUOt?&cb#h-4Y3Eb}! zsf?y)p)2qaux}iLc08r8ehg$ z(5qaVDS=-)SA(gX?*yro`}V`#TIC<0@;*37lQcKDY8Nd`YdbTccE2e~!}5k+VCf&daUp`7~LC zdSq9?ll@warBr(wp81yKpL59<(bU|k$e!f7)XW#)*O1c>zl2{=HP!UPi|`Unr`n`3 zDNIN^+%JvD0LSz|VG42n_wm%Gzk%OD&LMaWUWYf}x9}#s1#iO%cn98v_o$BQ>0+8e zGwBkVMYCxRHPGBcJn{a(%l}XCXLuhzfDie56MW3mZytw%`P4`YsfiZx_u;fS38h+8 zW3gzgJ{0Eg7>cylMYQG+)bL`UvUp478F~)?pe4lgXlGZ9qoo>bOeld>Ni^Y5;nD=H z=~5y=HJGx}t1TG-Ox*`ua$J+F35wVBEbQsxNTe;D&LKzX;zGF|8YE|Y)20o48(6rY zn}d#qVj3RkE&tmF_$Bw5axdnMvx^Inl1Naj0RcyW;uHp)gs=C|0zFH2fAdV zn%E29AV3*!tNbOIsK{W<9sC zhu~0JLd)pVblzh&o_l6?;z-P)R$8jDDh)2uS*6uuZdF&+nF))da7@PHu{e&Flb;t2 zUpiRFxmBw(5*>@MG-KTazNs>}X&Mf+O;eUt;B?42h?B7rFT^Q06{q1vScTPCLjeks zN-LFg^{2V3+e-d#3Q*#TcH`ONzskwjC7HH@X+5IyW2Xsm?ipK zQlcdD6$8{TEky&Z0X5Rd<(F~>rp?nt#uL01E>N}V;15X_5nsZI5C`~$F;z`@YY8sp zd4R1H>BD6d)vO$)?>^8BzDrn2fPw){KpS=SVURAP5ew%ip-5`91H<6niy>Tzt0+cs zO6?&v6WbJuRuvS)0@cHDspwUPIoNPF@z%|1Bj`z3GY+<|KT_VPOYL+z*j`#wW1L(2r6GZ6XQ9&76;=y_i8Gja%HW;&LvWv+)#7bT-CHc}eRjs}w1wtP_Ad5Xqf z`HW7U8iSuTz~l(MX6}mA+QBipmbTChbR}Kmmx|K;E5l2=xWY6OX-ver1BvdKs>l6^ z7WbdfRXpza06xeyeuyXD(Ita>G$nVZt9d4F?Gy&RK)u6In9c*4e5?}0e|V2#&A5!h{K>)GBds(f2E20-t*5Mf-?@a_;m6B zdz~KN<63-QrR_A9*Z*K2)d_W3NqKK?D*fNU-$KrwJ?T>(zKxv9?86iI4!(=;(am%V z-AX^$hrh=^!29?o+C{rLHQ@`IXR9lcB(`NisJ$ckv_!{69h;M!B1Lr5=$zX3WBj|e z&0q0v_z8YWKcw5}cDiF9FSnie8NVqQ&J*uPyvuOR&0eI$LKZiNX1cJGk=geNt zyv#>?X&+5ZJ2|)NhFxdU2A0h-I0qZaa_GmjpQa9mBeyE?RK}W7Y_w*;1$1{G8$$<^ z2ArMXvwTg@0#-h;|dctWnDMxS7evqleQV%~TDf>F9T3^4W1zN6ZZSSd?4X4Ey+f*gkrUt96X{)hVaNETQe%z#XEW zvDq5dC_zFn&cn9?JN|^hL=_+L!US_(y&v`zihdKjW9OC-D@XWmr*wQj6;pXjiZgF z#)-yqV}-HOIK_Ceai(#WagK4WalWz97%|>r+-rQo_-ErM#xIRunG7bI$!i*KDm7hX zsxr+nEj2ASU21AG1x+hV9j2A09@9EguW5s6qiM5gi|K09HKtvrW2TSH`Q`@mO7j-; zZu5TgLGxkrz2>9lW9H}0Z<^mWzhi#S{Co2s&3`t3VE&8wr1_NjbQWeAvP@Z7S(Yp@ z%bs;X*5s_ZtnRF>Sx2*8$a*8|&8(AxAc%rpkOa5j5yl85Lb*^OR0>msnL>jwPgo!< z7FvW>VVST>STAf4whG&YTZO&C0pXxs!_n)_1KR zSUlKm@gKJ#bT*AQLGm0#Tnuy;#_gQ*eEuM z9pYu;dU3P3MZ8+PUc6DinnkbLSV5QF2ONX^1pT%9cu`N~uL!F7--RNjs%GrMsm=(mm1< z7q~30k*+*frE9t?;)=U=yB>5s?fRMPS=TRI|Lr>N`i<*#*C(#8U8h{%xWR3A``km_ z!`k9CiC7r2YuCGJXht$VJ!-JNjvx;MBtx;MMGxNmfCbMJ89?7r2#%l)wX zxcgtSQywZ0le6V9@_4yGE|yE>iSi7&Np6;x$jfBEtjH_nsC=0mm%HUn^40P+@^$hy zd53(ne5-t?d_aCkepEgtKOz52epdd4{JeZzep~)f{#gE-{CD}E^5-6l$L$&78Rp6M zjPQ)}6nRQK6Fe23O3xI}G|vpre9v-Ez@vKFJz-D8)8&bIuJqjCxy^IC=MK+q&k@fv zo_9Q7dQN&yc}{!LJKUS=9p^3gws=)aXvw{{!#HxMu(W literal 0 HcmV?d00001 diff --git a/14a. Initialization.playground/section-1.swift b/14a. Initialization.playground/section-1.swift index 8638c0a..46a6238 100644 --- a/14a. Initialization.playground/section-1.swift +++ b/14a. Initialization.playground/section-1.swift @@ -1,4 +1,5 @@ // ------------------------------------------------------------------------------------------------ +// Checked and updated September 2016 // Things to know: // // * Swift provides an initializer (which partially resembles a function) to ensure that every @@ -67,7 +68,7 @@ let freezingPointOfWater = Celsius(kelvin: 273.15) // name generation and one that opts out: struct Color { - let red = 0.0, green = 0.0, blue = 0.0 + var red = 0.0, green = 0.0, blue = 0.0 // This initializer will make use of automatically generated exernal names init(red: Double, green: Double, blue: Double) @@ -116,7 +117,7 @@ class SurveyQuestion class SurveyQuestion2 { // Default value of "No question" - let text: String = "No question" + var text: String = "No question" var response: String? diff --git a/14a. Initialization.playground/timeline.xctimeline b/14a. Initialization.playground/timeline.xctimeline index 152e9b8..79df9b3 100644 --- a/14a. Initialization.playground/timeline.xctimeline +++ b/14a. Initialization.playground/timeline.xctimeline @@ -3,7 +3,9 @@ version = "3.0"> + documentLocation = "#CharacterRangeLen=0&CharacterRangeLoc=7182&EndingColumnNumber=5&EndingLineNumber=10&StartingColumnNumber=4&StartingLineNumber=10&Timestamp=496755767.283091" + selectedRepresentationIndex = "0" + shouldTrackSuperviewWidth = "NO"> From 9f51f24ccadddbde695a2e361b954c0e16918e96 Mon Sep 17 00:00:00 2001 From: Christopher Bell Date: Wed, 28 Sep 2016 12:44:47 +0100 Subject: [PATCH 19/27] Updated to Swift 3 Small update --- .DS_Store | Bin 10244 -> 10244 bytes .../contents.xcplayground | 2 +- .../contents.xcworkspacedata | 7 +++++++ .../UserInterfaceState.xcuserstate | Bin 0 -> 7148 bytes .../section-1.swift | 5 +++-- .../timeline.xctimeline | 4 +++- 6 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 14b. Initializer Chaining.playground/playground.xcworkspace/contents.xcworkspacedata create mode 100644 14b. Initializer Chaining.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/.DS_Store b/.DS_Store index a66e12e7eedc38fc96302964d6e1b25ab6bba873..2b3009f9903d6bee07d3852d254b82fa4c9f6990 100644 GIT binary patch delta 17 YcmZn(XbIR5A;iMKz#z6cMreg7051Imy8r+H delta 17 XcmZn(XbIR5A;j_@2sXzEtq=tOOj`({ diff --git a/14b. Initializer Chaining.playground/contents.xcplayground b/14b. Initializer Chaining.playground/contents.xcplayground index 18a12f6..8e39341 100644 --- a/14b. Initializer Chaining.playground/contents.xcplayground +++ b/14b. Initializer Chaining.playground/contents.xcplayground @@ -4,4 +4,4 @@ - + \ No newline at end of file diff --git a/14b. Initializer Chaining.playground/playground.xcworkspace/contents.xcworkspacedata b/14b. Initializer Chaining.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/14b. Initializer Chaining.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/14b. Initializer Chaining.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate b/14b. Initializer Chaining.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..ad38696e027b8efcd02e686ed1ec4c2a639734a3 GIT binary patch literal 7148 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 Z!;TjmuR7jRcp)L3pKFxQ$h+gz{{alin>+vj literal 0 HcmV?d00001 diff --git a/14b. Initializer Chaining.playground/section-1.swift b/14b. Initializer Chaining.playground/section-1.swift index d4ed131..a003160 100644 --- a/14b. Initializer Chaining.playground/section-1.swift +++ b/14b. Initializer Chaining.playground/section-1.swift @@ -1,4 +1,5 @@ // ------------------------------------------------------------------------------------------------ +// Checked and updated September 2016 // Things to know: // // * Initializer Chaining refers to the way in which initialization takes place along the class @@ -190,5 +191,5 @@ struct CheckerBoard // We can now check our work var board = CheckerBoard() -board.squareIsBlackAtRow(1, column: 1) // Should be false -board.squareIsBlackAtRow(1, column: 2) // Should be true +board.squareIsBlackAtRow(row: 1, column: 1) // Should be false +board.squareIsBlackAtRow(row: 1, column: 2) // Should be true diff --git a/14b. Initializer Chaining.playground/timeline.xctimeline b/14b. Initializer Chaining.playground/timeline.xctimeline index a497a91..1d94b7d 100644 --- a/14b. Initializer Chaining.playground/timeline.xctimeline +++ b/14b. Initializer Chaining.playground/timeline.xctimeline @@ -3,7 +3,9 @@ version = "3.0"> + documentLocation = "#CharacterRangeLen=0&CharacterRangeLoc=7500&EndingColumnNumber=5&EndingLineNumber=27&StartingColumnNumber=4&StartingLineNumber=27&Timestamp=496755871.982254" + selectedRepresentationIndex = "0" + shouldTrackSuperviewWidth = "NO"> From 409fb1f617ff2243b79d566a8cfa6e5dcc4c32c4 Mon Sep 17 00:00:00 2001 From: Christopher Bell Date: Wed, 28 Sep 2016 12:47:32 +0100 Subject: [PATCH 20/27] Updated to Swift 3 Small change --- .DS_Store | Bin 10244 -> 10244 bytes .../contents.xcplayground | 2 +- .../contents.xcworkspacedata | 7 +++++++ .../UserInterfaceState.xcuserstate | Bin 0 -> 7107 bytes .../section-1.swift | 14 ++++++++------ .../timeline.xctimeline | 4 +++- 6 files changed, 19 insertions(+), 8 deletions(-) create mode 100644 15. Deinitialization.playground/playground.xcworkspace/contents.xcworkspacedata create mode 100644 15. Deinitialization.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/.DS_Store b/.DS_Store index 2b3009f9903d6bee07d3852d254b82fa4c9f6990..b11358934de8d974fab3d8072e7c8f1bad798f6a 100644 GIT binary patch delta 17 YcmZn(XbIS`O^AhofkAxpE+H>b05m5B8UO$Q delta 17 XcmZn(XbIS`O^D?`5NzHhk diff --git a/15. Deinitialization.playground/contents.xcplayground b/15. Deinitialization.playground/contents.xcplayground index 18a12f6..8e39341 100644 --- a/15. Deinitialization.playground/contents.xcplayground +++ b/15. Deinitialization.playground/contents.xcplayground @@ -4,4 +4,4 @@ - + \ No newline at end of file diff --git a/15. Deinitialization.playground/playground.xcworkspace/contents.xcworkspacedata b/15. Deinitialization.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/15. Deinitialization.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/15. Deinitialization.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate b/15. Deinitialization.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..3c1e9e80948d61628f8e0d50cf07dbd16641155c GIT binary patch literal 7107 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 C?U|DR literal 0 HcmV?d00001 diff --git a/15. Deinitialization.playground/section-1.swift b/15. Deinitialization.playground/section-1.swift index fec04d3..2412aa3 100644 --- a/15. Deinitialization.playground/section-1.swift +++ b/15. Deinitialization.playground/section-1.swift @@ -1,4 +1,5 @@ // ------------------------------------------------------------------------------------------------ +// Checked and updated September 2016 // Things to know: // // * Deinitializers are called automatically before a class instance is @@ -17,9 +18,10 @@ struct Bank { static var coinsInBank = 10_000 - static func vendCoins(var numberOfCoinsToVend: Int) -> Int - { - numberOfCoinsToVend = min(numberOfCoinsToVend, coinsInBank) + static func vendCoins(numberOfCoinsToVend: Int) -> Int + { + var numberOfCoinsToVend = numberOfCoinsToVend + numberOfCoinsToVend = min(numberOfCoinsToVend, coinsInBank) coinsInBank -= numberOfCoinsToVend return numberOfCoinsToVend } @@ -36,7 +38,7 @@ class Player init(coins: Int) { - coinsInPurse = Bank.vendCoins(coins) + coinsInPurse = Bank.vendCoins(numberOfCoinsToVend: coins) } func winCoins(coins: Int) @@ -46,7 +48,7 @@ class Player deinit { - Bank.receiveCoins(coinsInPurse) + Bank.receiveCoins(coins: coinsInPurse) } } @@ -57,7 +59,7 @@ playerOne!.coinsInPurse Bank.coinsInBank // The Player now wins 2000 coins! -playerOne!.winCoins(2_000) +playerOne!.winCoins(coins: 2_000) playerOne!.coinsInPurse Bank.coinsInBank diff --git a/15. Deinitialization.playground/timeline.xctimeline b/15. Deinitialization.playground/timeline.xctimeline index 96050ff..f9aee7b 100644 --- a/15. Deinitialization.playground/timeline.xctimeline +++ b/15. Deinitialization.playground/timeline.xctimeline @@ -3,7 +3,9 @@ version = "3.0"> + documentLocation = "#CharacterRangeLen=0&CharacterRangeLoc=2044&EndingColumnNumber=5&EndingLineNumber=2&StartingColumnNumber=4&StartingLineNumber=1&Timestamp=496756034.689658" + selectedRepresentationIndex = "0" + shouldTrackSuperviewWidth = "NO"> From b84bded4d1664c23f3fb8a0c426e920572819304 Mon Sep 17 00:00:00 2001 From: Christopher Bell Date: Fri, 30 Sep 2016 22:49:59 +0100 Subject: [PATCH 21/27] Updated to Swift 3 Some changes --- .DS_Store | Bin 10244 -> 10244 bytes .../contents.xcplayground | 2 +- .../contents.xcworkspacedata | 7 +++++++ .../UserInterfaceState.xcuserstate | Bin 0 -> 7146 bytes 18. Type Casting.playground/section-1.swift | 11 ++++++----- .../timeline.xctimeline | 4 +++- 6 files changed, 17 insertions(+), 7 deletions(-) create mode 100644 18. Type Casting.playground/playground.xcworkspace/contents.xcworkspacedata create mode 100644 18. Type Casting.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/.DS_Store b/.DS_Store index b11358934de8d974fab3d8072e7c8f1bad798f6a..4982ab9a48494343fbdf28d949456be18b0b0cd9 100644 GIT binary patch delta 35 mcmZn(XbITxONfPmfk9&OKcN^9LvnJQa1e+gwRwwhfCvD!*$D3d delta 35 icmZn(XbITxONiw^5KR6j6a!(z2?v20o3{uDhyVa~&lH#d diff --git a/18. Type Casting.playground/contents.xcplayground b/18. Type Casting.playground/contents.xcplayground index 18a12f6..8e39341 100644 --- a/18. Type Casting.playground/contents.xcplayground +++ b/18. Type Casting.playground/contents.xcplayground @@ -4,4 +4,4 @@ - + \ No newline at end of file diff --git a/18. Type Casting.playground/playground.xcworkspace/contents.xcworkspacedata b/18. Type Casting.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/18. Type Casting.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/18. Type Casting.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate b/18. Type Casting.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..f6b62fb8aa931f4bb7fab992f74e68f1fad9df85 GIT binary patch literal 7146 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 + documentLocation = "#CharacterRangeLen=0&CharacterRangeLoc=6545&EndingColumnNumber=5&EndingLineNumber=3&StartingColumnNumber=4&StartingLineNumber=3&Timestamp=496964976.489721" + selectedRepresentationIndex = "0" + shouldTrackSuperviewWidth = "NO"> From 4b295bd4678825d8cce97654e16c9dabef57dc3f Mon Sep 17 00:00:00 2001 From: Christopher Bell Date: Fri, 30 Sep 2016 22:53:06 +0100 Subject: [PATCH 22/27] Updated to Swift 3 Some changes --- .DS_Store | Bin 10244 -> 10244 bytes .../contents.xcplayground | 2 +- .../contents.xcworkspacedata | 7 +++++++ .../UserInterfaceState.xcuserstate | Bin 0 -> 7173 bytes 19. Nested Types.playground/section-1.swift | 15 ++++++++------- .../timeline.xctimeline | 4 +++- 6 files changed, 19 insertions(+), 9 deletions(-) create mode 100644 19. Nested Types.playground/playground.xcworkspace/contents.xcworkspacedata create mode 100644 19. Nested Types.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/.DS_Store b/.DS_Store index 4982ab9a48494343fbdf28d949456be18b0b0cd9..2bcd20f986ff562831129e22afe7c6f7f6d4b3ce 100644 GIT binary patch delta 17 YcmZn(XbITBCc?tNz#zSuOXQa@04lizZ~y=R delta 17 XcmZn(XbITBCc^R`2sU$x{1OHLNBIa* diff --git a/19. Nested Types.playground/contents.xcplayground b/19. Nested Types.playground/contents.xcplayground index 18a12f6..8e39341 100644 --- a/19. Nested Types.playground/contents.xcplayground +++ b/19. Nested Types.playground/contents.xcplayground @@ -4,4 +4,4 @@ - + \ No newline at end of file diff --git a/19. Nested Types.playground/playground.xcworkspace/contents.xcworkspacedata b/19. Nested Types.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/19. Nested Types.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/19. Nested Types.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate b/19. Nested Types.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..8802de4e570d29692917bd94ea3e26f646989ffd GIT binary patch literal 7173 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 Dqj|w$ literal 0 HcmV?d00001 diff --git a/19. Nested Types.playground/section-1.swift b/19. Nested Types.playground/section-1.swift index e34d5b4..1a0173c 100644 --- a/19. Nested Types.playground/section-1.swift +++ b/19. Nested Types.playground/section-1.swift @@ -1,4 +1,5 @@ // ------------------------------------------------------------------------------------------------ +// Updated September 2016 // Things to know: // // * Nested types are utility classes and structures that are declared within other classes, @@ -21,14 +22,14 @@ struct BlackjackCard // Nested Suit enumeration enum Suit: Character { - case Spades = "♠", Hearts = "♡", Diamonds = "♢", Clubs = "♣" + case spades = "♠", hearts = "♡", diamonds = "♢", clubs = "♣" } // Nested Rank enumeration enum Rank: Int { - case Two = 2, Three, Four, Five, Six, Seven, Eight, Nine, Ten - case Jack, Queen, King, Ace + case two = 2, three, four, five, six, seven, eight, nine, ten + case jack, queen, king, ace // A rank can possibly have two values (for the Ace), so we'll use this structure // to contain those two values. We could just as well use a Tuple, but we're showcasing @@ -49,9 +50,9 @@ struct BlackjackCard { switch self { - case .Ace: + case .ace: return Values(first: 1, second: 11) - case .Jack, .Queen, .King: + case .jack, .queen, .king: return Values(first: 10, second: nil) default: return Values(first: self.rawValue, second: nil) @@ -80,8 +81,8 @@ struct BlackjackCard // Also note that since the initializer knows thet type of each member being initialized (both of // which are enumerations) we can use the shorthand method (.Something) for each member's initial // value. -let theAceOfSpades = BlackjackCard(rank: .Ace, suit: .Spades) +let theAceOfSpades = BlackjackCard(rank: .ace, suit: .spades) theAceOfSpades.description // To access the nested type, we can drill down into the type using type names: -let heartsSymbol = String( BlackjackCard.Suit.Hearts.rawValue ) +let heartsSymbol = String( BlackjackCard.Suit.hearts.rawValue ) diff --git a/19. Nested Types.playground/timeline.xctimeline b/19. Nested Types.playground/timeline.xctimeline index 4d92167..caead57 100644 --- a/19. Nested Types.playground/timeline.xctimeline +++ b/19. Nested Types.playground/timeline.xctimeline @@ -3,7 +3,9 @@ version = "3.0"> + documentLocation = "#CharacterRangeLen=0&CharacterRangeLoc=3073&EndingColumnNumber=5&EndingLineNumber=3&StartingColumnNumber=4&StartingLineNumber=3&Timestamp=496965170.846613" + selectedRepresentationIndex = "0" + shouldTrackSuperviewWidth = "NO"> From f66ab38f79b0c23124764d8de67e2790cecc6289 Mon Sep 17 00:00:00 2001 From: Christopher Bell Date: Fri, 30 Sep 2016 22:59:58 +0100 Subject: [PATCH 23/27] Updated to Swift 3 Some updates --- .DS_Store | Bin 10244 -> 10244 bytes .../contents.xcplayground | 2 +- .../contents.xcworkspacedata | 7 +++++++ .../UserInterfaceState.xcuserstate | Bin 0 -> 7151 bytes 20. Extensions.playground/section-1.swift | 19 +++++++++--------- 20. Extensions.playground/timeline.xctimeline | 4 +++- 6 files changed, 21 insertions(+), 11 deletions(-) create mode 100644 20. Extensions.playground/playground.xcworkspace/contents.xcworkspacedata create mode 100644 20. Extensions.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/.DS_Store b/.DS_Store index 2bcd20f986ff562831129e22afe7c6f7f6d4b3ce..c2c7a009a7212c7caaf9e33f2b3ffe5f729ca9cc 100644 GIT binary patch delta 27 ccmZn(XbIS`ON@nqfk9^TKCwUiFqRu50C>L#$p8QV delta 27 bcmZn(XbIS`ON`||5NzHj_J<$Fa$^Jl+4B#H diff --git a/20. Extensions.playground/contents.xcplayground b/20. Extensions.playground/contents.xcplayground index 18a12f6..8e39341 100644 --- a/20. Extensions.playground/contents.xcplayground +++ b/20. Extensions.playground/contents.xcplayground @@ -4,4 +4,4 @@ - + \ No newline at end of file diff --git a/20. Extensions.playground/playground.xcworkspace/contents.xcworkspacedata b/20. Extensions.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/20. Extensions.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/20. Extensions.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate b/20. Extensions.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..a6568ff10fdcc3f9267a9368791378b350135571 GIT binary patch literal 7151 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 Bu{!_& literal 0 HcmV?d00001 diff --git a/20. Extensions.playground/section-1.swift b/20. Extensions.playground/section-1.swift index 19b54e1..2d60b0a 100644 --- a/20. Extensions.playground/section-1.swift +++ b/20. Extensions.playground/section-1.swift @@ -1,4 +1,5 @@ // ------------------------------------------------------------------------------------------------ +// Updated September 2016 // Things to know: // // * Similar to Objective-C categories, extensions allow you to add functionality to an existing @@ -108,7 +109,7 @@ extension Int { func repititions(task: () -> ()) { - for i in 0.. + documentLocation = "#CharacterRangeLen=0&CharacterRangeLoc=5390&EndingColumnNumber=5&EndingLineNumber=3&StartingColumnNumber=4&StartingLineNumber=3&Timestamp=496965583.146364" + selectedRepresentationIndex = "0" + shouldTrackSuperviewWidth = "NO"> From db6abd0b63f25f6866bb6e9253d248a519b6e39a Mon Sep 17 00:00:00 2001 From: Christopher Bell Date: Fri, 30 Sep 2016 23:08:25 +0100 Subject: [PATCH 24/27] Updated to Swift 3 Some updates --- .DS_Store | Bin 10244 -> 10244 bytes .../contents.xcplayground | 2 +- .../contents.xcworkspacedata | 7 +++++ .../UserInterfaceState.xcuserstate | Bin 0 -> 7145 bytes 21. Protocols.playground/section-1.swift | 24 ++++++++++-------- 21. Protocols.playground/timeline.xctimeline | 4 ++- 6 files changed, 25 insertions(+), 12 deletions(-) create mode 100644 21. Protocols.playground/playground.xcworkspace/contents.xcworkspacedata create mode 100644 21. Protocols.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/.DS_Store b/.DS_Store index c2c7a009a7212c7caaf9e33f2b3ffe5f729ca9cc..11a9bdc7648332bbb0e8436669d252b2c3ad6289 100644 GIT binary patch delta 26 ecmZn(XbITBCC;_E$ delta 26 dcmZn(XbITBCC>662sZPH|KSI-Ci97Z0|2p14hsMP diff --git a/21. Protocols.playground/contents.xcplayground b/21. Protocols.playground/contents.xcplayground index 18a12f6..8e39341 100644 --- a/21. Protocols.playground/contents.xcplayground +++ b/21. Protocols.playground/contents.xcplayground @@ -4,4 +4,4 @@ - + \ No newline at end of file diff --git a/21. Protocols.playground/playground.xcworkspace/contents.xcworkspacedata b/21. Protocols.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/21. Protocols.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/21. Protocols.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate b/21. Protocols.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..e80dee996390294f07efcd2d2644d905da2faab7 GIT binary patch literal 7145 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 literal 0 HcmV?d00001 diff --git a/21. Protocols.playground/section-1.swift b/21. Protocols.playground/section-1.swift index 6f1abc6..4163c3c 100644 --- a/21. Protocols.playground/section-1.swift +++ b/21. Protocols.playground/section-1.swift @@ -1,4 +1,5 @@ // ------------------------------------------------------------------------------------------------ +// Updated September 2016 // Things to know: // // * Protocols define a required set of functionality (including methods and properties) for a @@ -44,6 +45,9 @@ // // Let's take a look at a simple protocol. As you'll see, we only need to define the properties // in terms of 'get' and 'set' and do not provide the actual functionality. + +import Foundation + protocol someProtocolForProperties { // A read/write property @@ -54,7 +58,7 @@ protocol someProtocolForProperties // A type property always uses 'class'. This is the case even if adopted by a structure or // enumeration which will use 'static' when conforming to the protocol's property. - class var someTypeProperty: Int { get set } + static var someTypeProperty: Int { get set } } // Let's create a more practical protocol that we can actually conform to: @@ -85,7 +89,7 @@ class Starship: FullyNamed var fullName: String { - return (prefix != .None ? prefix! + " " : "") + name + return (prefix != .none ? prefix! + " " : "") + name } } @@ -126,7 +130,7 @@ class LinearCongruentialGenerator: RandomNumberGenerator var c = 29573.0 func random() -> Double { - lastRandom = ((lastRandom * a + c) % m) + lastRandom = (lastRandom * a + c).truncatingRemainder(dividingBy: m) return lastRandom / m } } @@ -299,13 +303,13 @@ struct Individual: Named, Aged // Here, we can see the protocol composition at work as the parameter into the wishHappyBirthday() // function: -func wishHappyBirthday(celebrator: protocol) -> String +func wishHappyBirthday(celebrator: Named & Aged) -> String { return "Happy Birthday \(celebrator.name) - you're \(celebrator.age)!" } // If we call the member, we can see the celebratory wish for this individual: -wishHappyBirthday(Individual(name: "Bill", age: 31)) +wishHappyBirthday(celebrator: Individual(name: "Bill", age: 31)) // ------------------------------------------------------------------------------------------------ // Checking for Protocol Conformance @@ -381,26 +385,26 @@ objects[2] is HasArea // Here's another simple protocol that uses optional requrements: @objc protocol CounterDataSource { - optional func incrementForCount(count: Int) -> Int - optional var fixedIncrement: Int { get } + @objc optional func incrementForCount(count: Int) -> Int + @objc optional var fixedIncrement: Int { get } } // In the class below, we'll see that checking to see if an instance conforms to a specific // requirement is similar to checking for (and accessing) optionals. We'll use optional chaining // for these optional reqirements: -@objc class Counter +class Counter { var count = 0 var dataSource: CounterDataSource? func increment() { // Does the dataSource conform to the incrementForCount method? - if let amount = dataSource?.incrementForCount?(count) + if let amount = dataSource?.incrementForCount?(count: count) { count += amount } // If not, does it conform to the fixedIncrement variable requirement? - else if let amount = dataSource?.fixedIncrement? + else if let amount = dataSource?.fixedIncrement { count += amount } diff --git a/21. Protocols.playground/timeline.xctimeline b/21. Protocols.playground/timeline.xctimeline index e56777b..f02786b 100644 --- a/21. Protocols.playground/timeline.xctimeline +++ b/21. Protocols.playground/timeline.xctimeline @@ -3,7 +3,9 @@ version = "3.0"> + documentLocation = "#CharacterRangeLen=0&CharacterRangeLoc=13169&EndingColumnNumber=5&EndingLineNumber=3&StartingColumnNumber=4&StartingLineNumber=3&Timestamp=496966090.588793" + selectedRepresentationIndex = "0" + shouldTrackSuperviewWidth = "NO"> From 458729c59e6ed9efaf37bbad76faa1456924bd2c Mon Sep 17 00:00:00 2001 From: Christopher Bell Date: Fri, 30 Sep 2016 23:16:00 +0100 Subject: [PATCH 25/27] Updated to Swift 3 Some changes --- .DS_Store | Bin 10244 -> 10244 bytes 22. Generics.playground/contents.xcplayground | 2 +- .../contents.xcworkspacedata | 7 +++ .../UserInterfaceState.xcuserstate | Bin 0 -> 7139 bytes 22. Generics.playground/section-1.swift | 55 +++++++++--------- 22. Generics.playground/timeline.xctimeline | 4 +- 6 files changed, 39 insertions(+), 29 deletions(-) create mode 100644 22. Generics.playground/playground.xcworkspace/contents.xcworkspacedata create mode 100644 22. Generics.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/.DS_Store b/.DS_Store index 11a9bdc7648332bbb0e8436669d252b2c3ad6289..d1ef8d542fb074e80fa1854848226a87e1977654 100644 GIT binary patch delta 26 ecmZn(XbIR5A@d<6hv_y+3$ delta 26 dcmZn(XbIR5A - + \ No newline at end of file diff --git a/22. Generics.playground/playground.xcworkspace/contents.xcworkspacedata b/22. Generics.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/22. Generics.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/22. Generics.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate b/22. Generics.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..9e67260d03d3634283a00dca53babcd000d97e33 GIT binary patch literal 7139 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 W{Lc72;cg9-w*23!{6~J{_x=}G{licI literal 0 HcmV?d00001 diff --git a/22. Generics.playground/section-1.swift b/22. Generics.playground/section-1.swift index 3bd203c..abddde8 100644 --- a/22. Generics.playground/section-1.swift +++ b/22. Generics.playground/section-1.swift @@ -1,4 +1,5 @@ // ------------------------------------------------------------------------------------------------ +// Updated September 2016 // Things to know: // // * Generics allow flexible, reusable functions and types that can work with any type, subject @@ -12,7 +13,7 @@ // The problem that Generics solve // // Consider the following function which can swap two Ints. -func swapTwoInts(inout a: Int, inout b: Int) +func swapTwoInts( a: inout Int, b: inout Int) { let tmp = a a = b @@ -21,7 +22,7 @@ func swapTwoInts(inout a: Int, inout b: Int) // What if we wanted to swap Strings? Or any other type? We would need to write a lot of different // swap functions. Instead, let's use Generics. Consider the following generic function: -func swapTwoValues(inout a: T, inout b: T) +func swapTwoValues( a: inout T, b: inout T) { let tmp = a a = b @@ -53,19 +54,19 @@ func swapTwoValues(inout a: T, inout b: T) // Let's call it a few times to see it in action: var aInt = 3 var bInt = 4 -swapTwoValues(&aInt, &bInt) +swapTwoValues(a: &aInt, b: &bInt) aInt bInt var aDouble = 3.3 var bDouble = 4.4 -swapTwoValues(&aDouble, &bDouble) +swapTwoValues(a: &aDouble, b: &bDouble) aDouble bDouble var aString = "three" var bString = "four" -swapTwoValues(&aString, &bString) +swapTwoValues(a: &aString, b: &bString) aString bString @@ -95,10 +96,10 @@ struct Stack // Let's use our new Stack: var stackOfStrings = Stack() -stackOfStrings.push("uno") -stackOfStrings.push("dos") -stackOfStrings.push("tres") -stackOfStrings.push("cuatro") +stackOfStrings.push(item: "uno") +stackOfStrings.push(item: "dos") +stackOfStrings.push(item: "tres") +stackOfStrings.push(item: "cuatro") stackOfStrings.pop() stackOfStrings.pop() @@ -135,7 +136,7 @@ func doSomethingWithKeyValue(someKey: KeyType, som // criteria. func findIndex(array: [T], valueToFind: T) -> Int? { - for (index, value) in enumerate(array) + for (index, value) in array.enumerated() { if value == valueToFind { @@ -146,8 +147,8 @@ func findIndex(array: [T], valueToFind: T) -> Int? } // Let's try a few different inputs -let doubleIndex = findIndex([3.14159, 0.1, 0.25], 9.3) -let stringIndex = findIndex(["Mike", "Malcolm", "Andrea"], "Andrea") +let doubleIndex = findIndex(array: [3.14159, 0.1, 0.25], valueToFind: 9.3) +let stringIndex = findIndex(array: ["Mike", "Malcolm", "Andrea"], valueToFind: "Andrea") // ------------------------------------------------------------------------------------------------ // Associated types @@ -158,7 +159,7 @@ let stringIndex = findIndex(["Mike", "Malcolm", "Andrea"], "Andrea") // Let's jump right into some code: protocol Container { - typealias ItemType + associatedtype ItemType mutating func append(item: ItemType) var count: Int { get } subscript(i: Int) -> ItemType { get } @@ -189,9 +190,9 @@ struct StackContainer : Container // Below, we conform to the protocol - mutating func append(item: T) - { - self.push(item) + mutating func append(item: T) + { + self.push(item: item) } var count: Int { @@ -210,17 +211,17 @@ struct StackContainer : Container // // Let's verify our work: var stringStack = StackContainer() -stringStack.push("Albert") -stringStack.push("Andrew") -stringStack.push("Betty") -stringStack.push("Jacob") +stringStack.push(item: "Albert") +stringStack.push(item: "Andrew") +stringStack.push(item: "Betty") +stringStack.push(item: "Jacob") stringStack.pop() stringStack.count var doubleStack = StackContainer() -doubleStack.push(3.14159) -doubleStack.push(42.0) -doubleStack.push(1_000_000) +doubleStack.push(item: 3.14159) +doubleStack.push(item: 42.0) +doubleStack.push(item: 1_000_000) doubleStack.pop() doubleStack.count @@ -241,8 +242,8 @@ extension Array: Container {} // Let's take a look at a where clause in action. We'll define a function that works on two // different containers that that must contain the same type of item. func allItemsMatch - - (someContainer: C1, anotherContainer: C2) -> Bool + + (someContainer: C1, anotherContainer: C2) -> Bool where C1.ItemType == C2.ItemType, C1.ItemType: Equatable { // Check that both containers contain the same number of items if someContainer.count != anotherContainer.count @@ -276,11 +277,11 @@ func allItemsMatch // // Let's test this out by passing the same value for each parameter which should definitely // return true: -allItemsMatch(doubleStack, doubleStack) +allItemsMatch(someContainer: doubleStack, anotherContainer: doubleStack) // We can compare stringStack against an array of type String[] because we've extended Swift's // Array type to conform to our Container protocol: -allItemsMatch(stringStack, ["Alpha", "Beta", "Theta"]) +allItemsMatch(someContainer: stringStack, anotherContainer: ["Alpha", "Beta", "Theta"]) // Finally, if we attempt to call allItemsMatch with a stringStack and a doubleStack, we would get // a compiler error because they do not store the same ItemType as defined in the function's diff --git a/22. Generics.playground/timeline.xctimeline b/22. Generics.playground/timeline.xctimeline index bcaf52b..5e9413f 100644 --- a/22. Generics.playground/timeline.xctimeline +++ b/22. Generics.playground/timeline.xctimeline @@ -3,7 +3,9 @@ version = "3.0"> + documentLocation = "#CharacterRangeLen=0&CharacterRangeLoc=2478&EndingColumnNumber=5&EndingLineNumber=3&StartingColumnNumber=4&StartingLineNumber=3&Timestamp=496966547.493615" + selectedRepresentationIndex = "0" + shouldTrackSuperviewWidth = "NO"> From 6ad7a69a776e7b086153e0fce7aa95d47e4b657c Mon Sep 17 00:00:00 2001 From: Christopher Bell Date: Fri, 30 Sep 2016 23:24:00 +0100 Subject: [PATCH 26/27] Updated to Swift 3 Updated but still a couple of errors --- .DS_Store | Bin 10244 -> 10244 bytes .../contents.xcplayground | 2 +- .../contents.xcworkspacedata | 7 +++++++ .../UserInterfaceState.xcuserstate | Bin 0 -> 7209 bytes .../section-1.swift | 13 +++++++------ .../timeline.xctimeline | 4 +++- 6 files changed, 18 insertions(+), 8 deletions(-) create mode 100644 23. Advanced Operators.playground/playground.xcworkspace/contents.xcworkspacedata create mode 100644 23. Advanced Operators.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/.DS_Store b/.DS_Store index d1ef8d542fb074e80fa1854848226a87e1977654..650a22c31a848d083d4f4685efe016931da57106 100644 GIT binary patch delta 26 ecmZn(XbIS`OPqy)fkA%rKJh>NVAkY);%)$N)CaKu delta 26 dcmZn(XbIS`OPu9D5NzHj{)ZpTn!Hck4FJjv4{HDb diff --git a/23. Advanced Operators.playground/contents.xcplayground b/23. Advanced Operators.playground/contents.xcplayground index 18a12f6..8e39341 100644 --- a/23. Advanced Operators.playground/contents.xcplayground +++ b/23. Advanced Operators.playground/contents.xcplayground @@ -4,4 +4,4 @@ - + \ No newline at end of file diff --git a/23. Advanced Operators.playground/playground.xcworkspace/contents.xcworkspacedata b/23. Advanced Operators.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/23. Advanced Operators.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/23. Advanced Operators.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate b/23. Advanced Operators.playground/playground.xcworkspace/xcuserdata/christopher.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..fbf4ab60d350fe9695de294f3d2d88db90bd0289 GIT binary patch literal 7209 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 E513ug$^ZZW literal 0 HcmV?d00001 diff --git a/23. Advanced Operators.playground/section-1.swift b/23. Advanced Operators.playground/section-1.swift index 30d53d8..6deca38 100644 --- a/23. Advanced Operators.playground/section-1.swift +++ b/23. Advanced Operators.playground/section-1.swift @@ -1,4 +1,5 @@ // ------------------------------------------------------------------------------------------------ +// Updated September 2016 // Things to know: // // * Arithmetic operators in Swift do not automatically overflow. Adding two values that overflow @@ -81,7 +82,7 @@ var aZero: Int8 = someValue - someValue var overflowAdd: Int8 = someValue &+ someValue var underflowSub: Int8 = -someValue &- someValue var overflowMul: Int8 = someValue &* someValue -var divByZero: Int8 = 100 &/ aZero +var divByZero: Int8 = 100 / aZero var remainderDivByZero: Int8 = 100 &% aZero // ------------------------------------------------------------------------------------------------ @@ -144,15 +145,15 @@ c = -a // they are also @assigmnent operators (and make use of inout for the parameter.) // // Let's take a look: -prefix func ++ (inout vector: Vector2D) -> Vector2D +prefix func ++ ( vector: inout Vector2D) -> Vector2D { vector = vector + Vector2D(x: 1.0, y: 1.0) return vector } -postfix func ++ (inout vector: Vector2D) -> Vector2D +postfix func ++ ( vector: inout Vector2D) -> Vector2D { - var previous = vector; + let previous = vector; vector = vector + Vector2D(x: 1.0, y: 1.0) return previous } @@ -205,10 +206,10 @@ func != (left: Vector2D, right: Vector2D) -> Bool // 'operator' keyword, folowed by either 'prefix', 'postfix' or 'infix': // // Swift meet operator, operator meet swift: -prefix operator +++ {} +prefix operator +++ // Now we can declare our new operator: -prefix func +++ (inout vector: Vector2D) -> Vector2D +prefix func +++ ( vector: inout Vector2D) -> Vector2D { vector = vector + vector return vector diff --git a/23. Advanced Operators.playground/timeline.xctimeline b/23. Advanced Operators.playground/timeline.xctimeline index f944334..1f5bd86 100644 --- a/23. Advanced Operators.playground/timeline.xctimeline +++ b/23. Advanced Operators.playground/timeline.xctimeline @@ -3,7 +3,9 @@ version = "3.0"> + documentLocation = "#CharacterRangeLen=0&CharacterRangeLoc=10279&EndingColumnNumber=5&EndingLineNumber=3&StartingColumnNumber=4&StartingLineNumber=3&Timestamp=496967020.24943" + selectedRepresentationIndex = "0" + shouldTrackSuperviewWidth = "NO"> From 3985fe4cf3d28fc8a1c1f539a1824d512935d3d9 Mon Sep 17 00:00:00 2001 From: Christopher Bell Date: Mon, 3 Oct 2016 01:41:00 +0100 Subject: [PATCH 27/27] Update README.md --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e5ddcf3..aacb091 100644 --- a/README.md +++ b/README.md @@ -9,8 +9,7 @@ Learn Apple's Swift programming language interactively through these playgrounds ###What you'll need - You will need XCode 6.0 GM (or later) or 6.1 Beta 2 (or later) and probably - a Mac to run it on. + You will need XCode 8.0 GM (or later) and a Mac to run it on. ###Purpose & Goal @@ -39,3 +38,5 @@ Learn Apple's Swift programming language interactively through these playgrounds Thanks to Rafał Wójcik for his quick work to update these playgrounds to incorporate the Swift language changes that came with XCode Beta 3. + + Most playgrounds updated to Swift 3 by Christopher Bell.