[Swift] how to create multiple preview import SwiftUI struct LandmarkList: View { var body: some View { NavigationView { List(landmarks) { landmark in NavigationLink { LandmarkDetail(landmark: landmark) } label: { LandmarkRow(landmark: landmark) } } .navigationTitle("Landmarks") } } } struct LandmarkList_Previews: PreviewProvider { static var previews: some View { ForEach(["iPhone SE (2nd generation)", "iPhone XS Max"], id: \.self) {..
[Swift] 반복문에서 id: \.id 의 의미 1. id 앞에 \. 이 붙는 이유, 반복문을 이용해서 리스트를 만들때 Key를 참조하는법 List(landmarks, id: \.id) { landmark in LandmarkRow(landmark: landmark) } 하지만 Landmark 코드에 struct Landmark: Hashable, Codable, Identifiable { 다음과 같이 Identifiable을 추가해주면 id key path는 삭제해도 된다. Identifiable 프로토콜을 구현하는 경우 id 프로퍼티를 직접 지정하지 않아도 List에서 요소를 식별할 수 있게 되어, key path를 따로 지정할 필요가 없기 때문이다! List(landmarks) { landmark in LandmarkRow(landmark: la..
[Swift] load(_:) method (fetching JSON data) 뜯어보기 import Foundation //Create an array of landmarks that you initialize from landmarkData.json. var landmarks: [Landmark] = load("landmarkData.json") func load(_ filename: String) -> T { let data: Data guard let file = Bundle.main.url(forResource: filename, withExtension: nil) else { fatalError("Couldn't find \(filename) in main bundle.") } do { // Data(contentsOf:) 메서드를 사용하여 파일의 내용을 Data 객체로 읽어온다...
[Swift] Swift 에서 Hashable, Codable은 뭘까? Protocol 알아보기 swiftui tutorial 의 예시 코드를 공부하다보면, Struct 뒤에 ~able 로 붙은 것들이 보인다. 이건 무엇이며 각각 어떤 역할을 할까? Hashable과 Codable은 스위프트 언어에서 프로토콜(Protocol)이다. 예시코드에서 각각의 의미 1. Hashable: Hashable 프로토콜은 객체를 고유한 해시값으로 매핑할 수 있도록 해주는 프로토콜이다. 해시값은 객체를 식별하는 데 사용되며, 해시 함수를 통해 계산된다. Hashable 프로토콜을 채택하면 해당 객체를 Set이나 Dictionary의 키로 사용할 수 있다. 또한, Hashable 프로토콜을 준수하는 객체는 집합(Set)과 같은 자료 구조에서 중복된 요소를 제거할 수 있다. Landmark 구조체의 인스턴스가 Hasha..
[SwiftUI] 헷깔리는 State, Binding, ObservedObject, EnvironmentObject 총정리 SwiftUI에서의 Single Source of Truth(SSOT, 단일 진실 공급원)란 데이터의 일관성과 정확성을 유지하기 위한 중요한 개념이다. 정보 시스템에 대한 SSOT(Single Source Of Truth) 아키텍처 또는 SPOT(Single Point Of Truth) 아키텍처는 모든 데이터 요소가 마스터(또는 편집)되도록 정보 및 모델 관련 데이터 스키마를 구성하는 관행이다. 한 곳에서만 정규 형식으로 데이터 정규화를 제공한다. 이 데이터 요소에 대한 모든 가능한 연결은 참조용이다. 데이터의 다른 모든 위치는 "source of truth" 위치를 다시 참조하기 때문에 기본 위치의 데이터 요소에 대한 업데이트는 전체 시스템에 전파되어 효율성/생산성 향상, 잘못된 불일치의 쉬운 방지 같..
[SwiftUI Tutorials] SwiftUI Essentials - Creating and Combining Views Creating and Combining Views | Apple Developer Documentation This tutorial guides you through building Landmarks — an app for discovering and sharing the places you love. You’ll start by building the view that shows a landmark’s details. developer.apple.com - SwiftUI 앱 수명 주기를 사용하는 앱은 앱 프로토콜을 준수하는 구조를 가짐. - 이 구조의 body 속성은 하나 이상의 Scene을 반환하고 표시할 콘텐츠를 제공. - @main 속성은 앱의 entry point를 식별. - 기본적으로 Swi..
iOS 앱개발 책 추천 : Doit! 스위프트로 아이폰앱 만들기 🏃🏻‍♀️ 바쁘다바빠 현대사회인을 위한 총평 - 필자는 컴퓨공학과 학생, 웹앱 분야 경험이 어느정도 있음 (플러터, 리액트 등) - 전공자 뿐만 아니라 비전공자도 전~혀 무리 없이 공부할 수 있을 것 같은 세심하고 친절함이 묻어있는 책! - 앱개발 아무것도 몰라도 책이 (너.......무!) 친절해서 어렵지 않을거라고 보장할 수 있음 👍 애플아카데미를 합격했지만 나는 스위프트를 공부해본 적이 없다. 그래서 2월 한 달 간 공부+미니프로젝트 하나를 해서 갈 계획이었다. 난 주로 공식문서 또는 유튜브/인터넷 강의를 들으며 듣는 편이고, 바로 코드를 짜며 무작정 프로젝트를 시작하는 편이라, 책으로 공부해본 적은 없었다. 감사하게도 그 와중에 이지스퍼블리싱에서 책을 제공해주셔서 이번엔 책으로 공부해보기로 했다!..