상세 컨텐츠

본문 제목

Day 35. Milestone: Projects 4-6

TIL/#100DaysOfSwiftUI

by box-jeon 2020. 3. 21. 23:18

본문

https://www.hackingwithswift.com/100/swiftui/35

 

100 Days of SwiftUI – Day 35 – Hacking with Swift

Link copied to your pasteboard.

www.hackingwithswift.com

Project 4, 5, 6에서 배운 것들을 전체적으로 훑어보았습니다. 몇 가지 View와 ViewModifier들을 나열한 후, 갑작스럽게 약간 딥한 내용들을 3가지 다룹니다.

Range와 ClosedRange

안그래도 의아하게 생각했는데, ForEach가 ClosedRange를 파라미터로 받으면 컴파일 에러가 나는 이유는 ForEach가 ClosedRange를 파라미터로 받는 생성자를 제공하지 않기 때문입니다. 아마 일부러 빼놓은 것이라고 생각되는데... 이유에 대한 특별한 설명은 하지 않고 있습니다.

String

Swift의 String은 사실 문자의 열로만 보기에는 유니코드 관련 대응이 아주 잘 되어 있습니다. 덕분에 NSString.length와 String.count가 다를 수 있고, 더 나아가 서버 쪽의 다른 언어라던가... 글자수를 다르게 세는 경우가 가끔 발생합니다.

Flat app bundles

앱 번들에 포함시킨 다양한 종류의 리소스들(text files, JSON, XML, Movies 등. loose files라고 부르고 있습니다)은 Xcode에서 그룹을 만들어 분류해놓아도 결국 번들 안에서는 하나의 리소스 디렉토리에 모두 저장된다고 합니다. 그렇게 함으로써 특정 이름을 가진 리소스의 URL을 번들에서 얻어낼 때, 모든 디렉토리를 뒤지지 않아도 됩니다.

Chanllenge

그리고 과제를 하나 내줍니다. 요구사항만 나열하고 알아서 구현하라고 하니 역시나 바로 코드가 나오질 않더군요. 그동안 작성했던 샘플들을 뒤지면서 어쩌어찌 완성을 했습니다. 다만 2번째 요구사항에 ContentView에 다 때려넣지 말고 View를 분리하라는 내용이 있었는데, ContentVew의 active라는 @State 프로퍼티에 따라 분기를 하도록 작성했더니 two-way binding을 구현해야만 subview로 나누는 게 가능해 보여서... 일단 패스했습니다. 

https://github.com/utrpanic/today-what-else/commit/cc341b1d0bb06bb7184e518931ea7b70131b5041

'TIL > #100DaysOfSwiftUI' 카테고리의 다른 글

Day 37. Project 7, part 2  (0) 2020.03.23
Day 36. Project 7, part 1  (0) 2020.03.22
Day 34. Project 6, part 3  (0) 2020.03.21
Day 33. Project 6, part 2  (0) 2020.03.19
Day 32. Project 6, part 1  (0) 2020.03.17

관련글 더보기

댓글 영역