potatotips #33 (iOS/Android開発Tips共有会) http://potatotips.connpass.com/event/38557/ の発表資料です。
େͰখΛ݉ͶΔͳby takasek2016/9/28 potatotips 331
View Slide
2
3
օ͞ΜΛཧ͢Δͱ͖ɺͲͷܕΛ͍·͔͢ʁ4
NSDate?5
ͱ͍Date?6
͋ͳͨͷΞϓϦͷ༷4 Ұ24࣌ؒ7
͋ͳͨͷΞϓϦͷ༷4 Ұ24࣌ؒ4 ͕มΘΔͷɺே8࣌8
͋ͳͨͷΞϓϦͷ༷4 Ұ24࣌ؒ4 ͕มΘΔͷɺே8࣌ɹ※͜ͷΛɺɹ௨ৗͷͱ۠ผ͢ΔͨΊʹɺɹShachikuDate ͱݺͼ·͢9
ShachikuDateͷจࣈྻදݱΛಘΔfunc shachikuDateDescription(_ !: Date) -> String {let formatter = DateFormatter()formatter.dateFormat = "yyyyMM݄dd"return formatter.string(from: !)}10
ShachikuDateΛ͍͍ͨlet ! = parseDate("2016-09-28 07:59:58")//"8࣌લͳͷͰɺshachikuDateDescription(!)//201609݄27 #ͱද͍ࣔͨ͠11
͜Μͳ;͏ʹม͢Δʁextension Date {var shachikuDate: Date {if self.hour < 8 { //8࣌લͳΒreturn (self.day - 1) //ࡢʹ͢Δ} else {return self}}}※ͪΐͬͱٖࣅίʔυ12
ᶃlet !1 = parseDate("2016-09-27 08:00:00")let !2 = parseDate("2016-09-28 07:59:58")!1.shachikuDate < !2.shachikuDateવtrueΛظ͠·͢ΑͶʁɹͰ…13
ᶃlet !1 = parseDate("2016-09-27 08:00:00")let !2 = parseDate("2016-09-28 07:59:58")!1.shachikuDate < !2.shachikuDate// false"14
ᶃͳͥͳΒlet !1 = parseDate("2016-09-27 08:00:00")let !2 = parseDate("2016-09-28 07:59:58")!1.shachikuDate// "2016-09-27 08:00:00" "มԽͯ͠ͳ͍!2.shachikuDate// "2016-09-27 07:59:58" "ҰḪͬͯΔ15
ᶄfunc printHoge(with !: Date) {printFuga(!.shachikuDate)}func printFuga(with !: Date) {print(!.shachikuDate)}let ! = parseDate("2016-09-28 07:59:58")printHoge(with: !)// "201609݄26"ࡢ(9/27)ͷΛظ͍ͯ͠ΔͷʹɺҰࡢ(9/26)ʹͳ͍ͬͯΔ…16
ᶄfunc printHoge(with !: Date) {printFuga(!.shachikuDate)}func printFuga(with !: Date) {print(!.shachikuDate)}ɹΑ͘ಡΉͱɺ1. printHoge(with:) ͰલͷDateʹม2. printHoge(with:) ͔Β printFuga(with:) ΛݺͿ4 printFuga(with:) ͰߋʹલͷDateʹม17
!"#$%!"$%όάʹؾ͚Δؾ͕͠ͳ͍…%$"!%$#"!18
ᶅϢʔβʔೖྗΛɺαʔόʹૹΔfunc didReceiveUserInput(year: Int, month: Int, day: Int) {let ! = Date(calendar: Caldendar.default,year: year,month: month,day: day)API.send(!)}19
!ʮͳ͋ʯ20
!ʮDBʹ4004ͱ͔ೖͬͯΔΜ͚ͩͲʯ21
!?22
func didReceiveUserInput(year: Int, month: Int, day: Int) {let ! = Date(calendar: Caldendar.default,year: year,month: month,day: day)API.send(!)}ɹ!Ͳ͜ʹ͕…!?23
func didReceiveUserInput(year: Int, month: Int, day: Int) {let ! = Date(calendar: Caldendar.default,//"࣮ྐྵઃఆ#ͯͨ͠!!!year: year, //$2016month: month,day: day)API.send(!)}ྐྵઃఆͳͷͰ ! = ฏ2016= 1988 + 2016= ྐྵ4004 ͱ͍͏Φν24
ॾѱͷࠜݯDateͱ͍͏ܕΛ͍ճ͍ͯ͠Δ25
Dateܕศར26
λΠϜκʔϯͷҧ͍ྐྵ๏ͷҧ͍શ෦ٵऩͯ͘͠ΕΔ27
Ͱ࣌ࠁͷࡉ੍͔͍ޚͬͯࠓɺඞཁʁ28
ࠓɺྐྵ๏ͬͯඞཁʁ29
ShachikuDate͕΄͍͠ͷ!͚ͩ30
ͳΒɺstruct YMD {let year: Intlet month: Intlet day: Intvar description: String {return "\(year)\(month)݄\(day)"}}let ! = YMD(year: 2016, month: 9, day: 28)31
γϯϓϧ32
όάͷೖΓࠐΈΑ͏͕ͳ͍33
!✨34
ಉ͜͡ͱΤϯδχΞϦϯάͷ༷ʑͳঢ়گͰݴ͑ͯɺ35
ྫ1☑ จষΛද͍ࣔͨ͠☑ Ұఆͷߴ͞Λ͑ͨΒεΫϩʔϧ͍ͤͨ͞!ͩͬͨΒUITextViewͰ͠ΐ͏36
݁Ռ1!จষྖҬͷϚʔδϯͷ੍ޚͭΒ͍…จষྖҬͷheight͕͏·͘औΕͳ͍……ਏ͍…37
!NSLayoutManager!NSTextStorage!NSTextContainer!etc...38
UITextViewͷ෦ߏҙ֎ͱຐڥ39
εΫϩʔϧͰ͖ΔLabel͕ཉ͍͚ͩ͠ͳΒɺUITextViewΦʔόʔεϖοΫ40
݁ہ1!UILabel Λ UIScrollView ʹೖΕΔ࣮Ͱ͘͢͝γϯϓϧʹղܾͰ͖ͨ…ʢίʔυ1ߦॻ͔ͣɺɹInterfaceBuilderͰ݁Ͱ͖ΔϨϕϧʣ41
ྫ2!○○ػೳΛ͍͍ͨͷͰ͋ͷϥΠϒϥϦೖΕΑ͏ͬͱʂ42
݁Ռ2!͋ͷϥΠϒϥϦͷ××ػೳʢผʹཁΒͳ͍ʣ͕ґଘ͢ΔผͷϥΠϒϥϦͷ͍ͤͰXcode8ରԠ͕ਐ·ͳ͍…!ͰϥΠϒϥϦࠓߋແཧ…43
͓Θ͔ΓͩΖ͏͔ػೳ͕ଟ͍ʹ᠘͕ଟ͍44
େ͕খΛ݉ͶΔͱ൵͠Έ͕ੜ·ΕΔ45
ͱ͍͏Θ͚Ͱ46
େࣄͳ͜ͱͳͷͰ͏Ұݴ͍·͢47
େͰখΛ݉ͶΔͳ48
ɹҎ্ɻ49
see also:UNIXֶ - Wikipedia50