inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

GalleryView 작성시, @State? @Bidnable? 의 차이점이 뭔지 궁금합니다.

미해결

[Lv.1] iOS 17 앱 개발 기초 - SwiftUI로 시작하기

IOS17로 업데이트 됨에 따라, @Observable 매크로를 활용하여 ViewModel을 활용하면, 상태 변화를 감지하여 'View에서 자동적으로 업데이트 된다.'라고 알고 있습니다. @Observable 매크로를 사용해서 코드를 업데이트하던 중 궁금증이 생겨 질문을 남겨봅니다. ContentView, VideoView에서 AnimalViewModel의 인스턴스를 갖고 있을 때, var로 정의했을 때와 let으로 정의를 했을 때의 차이점이 있을까요? struct ContentView: View { // let이나 var이나 상관없는가? let vm: AnimalViewModel var body: some View { NavigationStack{ List{ // 1. Cover Image - hero Image CoverImageView(vm: vm) 관련내용을 공부하다보니, 해당 링크에서 https://www.donnywals.com/comparing-observable-to-observableobjects/ " Defining an @Observable as a let property" 부분에 HomeView에서 ViewModel에 @State 프로퍼티 래퍼를 사용한 후 let을 사용한다? 라는 내용을 본적이 있습니다. GalleryView에서 @State 프로퍼티 래퍼와 @Bindable 프로퍼티 래퍼를 사용했을 때의 차이점이 뭘까요 ㅠㅠ . 우선, @State로 했을 때는 변화의 감지를 HomeView에서도 GalleryView에서도 잘 작동하여, 슬라이더를 변화시켰을 때 Grid의 개수가 바뀝니다. 하지만 @Bindable 프로퍼티 래퍼를 사용했을 때에는 GalleryView에서만 슬라이더 변화를 감지 하고, HomeView에서는 변화를 감지하지 못하는 상황이 벌어집니다. @State var vm: AnimalViewModel @Bindable var vm: AnimalViewModel struct GallaryView: View { @State var vm: AnimalViewModel var body: some View { NavigationStack{ ScrollView(.vertical, showsIndicators: false){ VStack(spacing: 30){ // 1. Image Image(vm.selectedAnimal) .resizable() .scaledToFill() .frame(width: 250, height: 250) .clipShape(Circle()) .overlay(Circle().stroke(Color.accentColor, lineWidth: 5)) // 2. Slider Slider(value: $vm.gridColumn, in: 2...4, step: 1) .padding(0) .onChange(of: vm.gridColumn) { withAnimation(Animation.easeInOut(duration: 1.0)){ vm.gridSwitch() } } // 3. Grid LazyVGrid(columns: vm.gridLayout, spacing: 20){ ForEach(vm.animals){ animal in Image(animal.image) .resizable() .scaledToFill() .frame(width: 80, height: 80) .clipShape(Circle()) .overlay(Circle().stroke(Color.white, lineWidth: 1)) .onTapGesture { withAnimation(Animation.spring()){ vm.selectedAnimal = animal.image } } } } } //:VSTACK .padding() } //:SCROLL .navigationTitle("갤러리") .navigationBarTitleDisplayMode(.inline) } //:NAVIGATION } } 추가로, @Observable 매크로를 이용한 예시가 잘 정리되어 있는 문서들이 있을까요?? 제가 잘 이해를 못한 건지, 이 부분이 너무 어렵네요. 감사합니다 😀

  • ios
  • swift
  • swiftui
ycc3819 댓글 2 좋아요 0 조회수 341

릴스 기능 문의

해결됨

Part2: 초중급 iOS 인스타그램 클론(SwiftUI, MVVM, Firebase, 2024)

강의에 릴스 페이지에 대한 기능은 업데이트 되지 않는건가요???

  • ios
  • firebase
  • swiftui
  • mvvm
이기혁 댓글 1 좋아요 1 조회수 173

init 함수가 없는 구조체에 인자가 들어갈 수 있는 이유가 궁금합니다.

해결됨

Part2: 초중급 iOS 인스타그램 클론(SwiftUI, MVVM, Firebase, 2024)

"ProfileView(viewModel: ProfileViewModel(user: user))" ProfileView에는 init함수가 존재하지 않지만 viewModel을 인자로 받아서 생성자를 호출할 수 있는 이유가 무엇인지 궁금합니다. viewModel에 @state를 사용했기 때문일까요? "구조체에 @state변수가 있다면 해당 구조체를 새로 만들 때 인자로 부여할 수 있다." 이렇게 이해하면 될까요?? @state에 대해 설명부탁드립니다

  • ios
  • firebase
  • swiftui
  • mvvm
제승욱 댓글 1 좋아요 1 조회수 232

NewPostViewModel.swift 생성후 오류 질문

해결됨

Part2: 초중급 iOS 인스타그램 클론(SwiftUI, MVVM, Firebase, 2024)

NewPostViewModel.swift 파일에서 @Observable에 Unknown attribute 'Observable' 이런 오류가 발생합니다... 찾아보니 ios버전이 17이하버전에서는 Observable을 사용할 수 없다고하는데, 제가 지금 16.4버전을 사용중에 있습니다. 버전을 업그레이드하려는데, 이 부분도 해결이 되지 않아서 그러는데, 어떻게 해야할까요?

  • ios
  • firebase
  • swiftui
  • mvvm
이기혁 댓글 2 좋아요 1 조회수 275

강의를 들으면서 앱을 만들어보고 있습니다

해결됨

Part1: 진짜 왕초보 iOS 배우기(SwiftUI, SwiftData, 2024)

chat gpt API를 활용해서 간단한 앱을 만들어보려고 하는데 API를 어떻게 써야할지 감이 잘 오지 않습니다. 혹시 괜찮으시다면 관련된 자료나 예시를 알 수 있을까요?

  • ios
  • swift
  • swiftui
  • swift5.5
o2k 댓글 3 좋아요 1 조회수 294

섹션2.끝말잇기앱 질문 - textfield 입력 변수 수정 방법

해결됨

Part1: 진짜 왕초보 iOS 배우기(SwiftUI, SwiftData, 2024)

끝말잇기 앱을 만들다가 궁금증이 생겼습니다. textfield 로 입력 받은 문자열을 수정해서 사용하고 싶을 때 (예: 사용자가 소문자로 입력한 영문자를 모두 대문자로 바꾸고 싶을 때) 어떻게 할 수 있나요? 입력받은 값을 저장한 변수를 건드리면 에러가 뜹니다. 즉, nextWord = nextWord + "수정 더함" 해도 에러가 나고 다른 변수에 대입한 후 그 변수를 바꾸려 해도 (nextWord2 = nextWord + "수정") 에러가 납니다.

  • ios
  • swift
  • swiftui
  • swift5.5
gatewaykim 댓글 1 좋아요 2 조회수 282

파트2 개강 예정시기

미해결

Apple 출신 개발자의 SwiftUI Basic Part 1 기초튼튼

안녕하세요, 혹시 파트2 개강 예정시기를 대략적으로 알 수 있을까요?

  • ios
  • swift
  • swiftui
에르난데스 댓글 4 좋아요 3 조회수 573

xcode15 프리부 2개로 안보여요

미해결

최신 SwiftUI와 UIKit과 함께하는 올인원 iOS 앱 개발 강의

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 2개로 안되고 뭘해도 저렇게 합쳐져요

  • ios
  • swift
  • swiftui
koo 댓글 2 좋아요 0 조회수 474

인기 태그

인프런 TOP Writers

주간 인기글