묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨Part2: 초중급 iOS 인스타그램 클론(SwiftUI, MVVM, Firebase, 2024)
@Bindable VS @Environment + @Bindable
안녕하세요. 강의 잘 듣고 있습니다.첫번째 질문.다름이 아니라, 처음에 회원가입 기능을 구현할 때, ViewModel을 @Observable을 통해 관찰 가능한 상태로 두고, ViewModel을 다루는 가장 상위 View인 ContentView에서 @State로 선언하는 것까지는 이해가 됩니다.ContentView의 하위 뷰들 중에서,로그인과 관련한 뷰는Login - EnterEmail - EnterPassword - EnterName - EnterUserName - Complete인데,강사님께서 코드로 작성해주신 간접적으로 접근하는 방법 말고, @Environment(SignupViewModel.self) var signupViewModel var body: some View { @Bindable var signupViewModel = signupViewModel 처음 설명해주신 직접적인 접근 방식을 활용했습니다.@Bindable var signupViewModel: SignupViewModel var body: some View{와 같이, ViewModel에 read-write가 가능하기 위해 @Bindable을 사용한다는 사실은 알고 있습니다.하지만 문제는 아래와 같이 입력한 결과에 대해서 출력도 잘 하는데, @Bindable을 적용하였을 때, 마지막 CompleteView에서 아래의 완료 버튼을 눌렀을 때 MainTabView으로 넘어가지 않은 문제가 생겼습니다.기존Auth.auth().currentUser 을 사용했을 때, swiftUI에서 변화를 감지 못하기 때문에, 알려주신대로 ViewModel 내부에서 var currentUserSession: FirebaseAuth.User? 프로퍼티를 만들어 했는데.. 왜 이러한 문제점이 생기는걸까요?if signupViewModel.currentUserSession != nil{ MainTabView() } else { LoginView() .environment(signupViewModel) }물론, 강사님이 알려주신 방법대로 하면 잘 넘어갑니다 ^^.두 번째 질문간접적인 방법 .environment를 사용했을 때, 오류가 떠서 CANVAS를 끄고 작업을 하셨는데 오류를 없앨수 있는 방법이 있을까요?1) 최상단 InstagramCloneApp에 ViewModel을 적용?2) environment로 설정되는 모든 뷰의 #Preview에 .enivronment() 적용?긴 글 읽어주셔서 감사합니다 😃 답변 기다리겠습니다.
-
미해결MAUI [Cross-Platform Applications & C#]
Oracle DB 를 이용한 예제
maui 를 강의를 수강한 학생입니다.한가지 문의 사항이 있습니다.Oracle DB 를 이용한 insert delete update select 하는 예시는 없을까요?가능하면 Spread 를 이용해서.....
-
해결됨Part2: 초중급 iOS 인스타그램 클론(SwiftUI, MVVM, Firebase, 2024)
17강 firebase로 이미지 업로드하기에서 업로드가 안됩니다~
선생님! 캡쳐사진 공유드립니다!!
-
해결됨Part2: 초중급 iOS 인스타그램 클론(SwiftUI, MVVM, Firebase, 2024)
17강 firebase로 이미지 업로드하기에서 업로드가 안됩니다~
Thread 9: Fatal error: Unexpectedly found nil while unwrapping an Optional value위와같은 오류가 뜨면서,,, 업로드가 안됩니다..
-
해결됨Part2: 초중급 iOS 인스타그램 클론(SwiftUI, MVVM, Firebase, 2024)
릴스 기능 문의
강의에 릴스 페이지에 대한 기능은 업데이트 되지 않는건가요???
-
해결됨Part2: 초중급 iOS 인스타그램 클론(SwiftUI, MVVM, Firebase, 2024)
init 함수가 없는 구조체에 인자가 들어갈 수 있는 이유가 궁금합니다.
"ProfileView(viewModel: ProfileViewModel(user: user))"ProfileView에는 init함수가 존재하지 않지만viewModel을 인자로 받아서 생성자를 호출할 수 있는 이유가 무엇인지 궁금합니다.viewModel에 @state를 사용했기 때문일까요?"구조체에 @state변수가 있다면 해당 구조체를 새로 만들 때 인자로 부여할 수 있다."이렇게 이해하면 될까요?? @state에 대해 설명부탁드립니다
-
해결됨Part2: 초중급 iOS 인스타그램 클론(SwiftUI, MVVM, Firebase, 2024)
NewPostViewModel.swift 생성후 오류 질문
NewPostViewModel.swift 파일에서 @Observable에 Unknown attribute 'Observable' 이런 오류가 발생합니다...찾아보니 ios버전이 17이하버전에서는 Observable을 사용할 수 없다고하는데, 제가 지금 16.4버전을 사용중에 있습니다. 버전을 업그레이드하려는데, 이 부분도 해결이 되지 않아서 그러는데, 어떻게 해야할까요?
-
해결됨[iOS] Swift Modern Collection View & MVVM 패턴 가이드
마지막 강의 "리스트 검색 기능 구현"이 다른 강의 영상으로 업로드 된 것 같아요
마지막 강의 "리스트 검색 기능 구현"이 다른 강의 동영상으로 업로드 된 것 같아요!!확인 부탁드립니다 🙂
-
해결됨Part2: 초중급 iOS 인스타그램 클론(SwiftUI, MVVM, Firebase, 2024)
선생님 12강 mvc 코드 실습 강의 내용 영상이 짤린건가요?
시작 부분이 뭔가 짤린 거 같습니다..?? 흐름을 따라갈 수 없어요 ㅜㅠㅜ
-
해결됨[iOS] Swift Modern Collection View & MVVM 패턴 가이드
섹션1 3번 레이아웃 deprecated 경고
createListCarouselSection() 함수에서 사용되는 let group = NSCollectionLayoutGroup.vertical(layoutSize: groupSize, subitem: item, count: 3) 'vertical(layoutSize:subitem:count:)' was deprecated in iOS 16.0 와 같은 경고가 뜨는데, let group = NSCollectionLayoutGroup.vertical(layoutSize: groupSize, repeatingSubitem: item, count: 3)으로 바꿔서 빌드하면 빌드는 되지만, 정상적으로 3개가 표시되지 않는 이슈가 있습니다. NSCollectionLayoutGroup.vertical(layoutSize: groupSize, repeatingSubitem: item, count: 3)을 사용해서 정상적으로 표기되려면 어떻게 해야하나요?
-
해결됨Flutter 중급 3편 - 의존성 주입 가이드
Riverpod 프로바이더에 의존성 주입
안녕하세요.선생님 강의를 듣고 MVVM 패턴에 DI 를 적용 해 보다가 질문이 있어 글 남깁니다.저는 Riverpod Provider 를 적용 해 보려고 하는데요.선생님께서 사용 하시는 ChangeNotifierProvider 에 DI 를 go_router 에 설정 하셨는데요.만일 RiverPod Provider 를 사용 한다면 어떻게 적용 해야 할까요?ViewModel안에서 UseCase를 생성자에서 받고 있어서 결국 라우터 안에 주입을 해 줘야 할꺼 같은데RiverPod 프로바이더에서는 어떻게 해 줘야 할지 모르겠네요.ㅡ,.ㅡ가이드 좀 부탁드립니다.
-
해결됨아키텍처 패턴 with iOS - GUI Architecture Patterns(이론)
MVVM in iOS - 리액티브 프로그래밍, 자동바인딩과 수동바인딩에서 질문이있습니다
안녕하세요강사님WPF에서는 자동바인딩이 제공되기때문에 MVVM을 사용하는데있어서 이점이있다고 말씀을해주셨고 iOS에서는 자동바인딩을 시스템레벨에서 제공해주지않기때문에 그런점에서 iOS의 MVVM패턴은 등장배경에서의 이유로 쓰이고있는지 고민해봐야한다고 말씀을 해주셨는데 여기서 궁금한점이 combine의 published는 uikit에서도 사용이가능하고 이는 combine이라는 도구를 시스템레벨에서 제공해주기때문에 combine의 등장으로 자동바인딩이 iOS에서도 제공된다고 할수있는게 아닌가라는 생각이들었습니다결국 $를 통해 binding변수로 만들어주면 해당 published변수의 변화에따라 view가 업데이트되니까 이런점에서는 uikit도 시스템레벨에서 자동바인딩을 지원한다라고 말할수있는게아닌가라는 생각이들었습니다 혹시 이부분에대해서 강사님의 생각이 궁금합니다!
-
미해결C# WPF .NET Core(7.0)
28강 영어단어맞추기 앱-1에 오류가 있어요.
Content="{Binding.}" 부분이 '중첩 형식이 지원되지 않습니다라고 뜨는데 소스상에 뭔가 다른 부분은 없는거 같아요. 왜 그런가요?
-
해결됨Flutter 중급 3편 - 의존성 주입 가이드
remote data source impl
안녕하세요. 강의 잘 보고 있습니다. remote data source impl 관련해서 질문이 있습니다. @prod @Singleton(as: CommunityRemoteDataSource) class CommunityRemoteDataSourceApiImpl implements CommunityRemoteDataSource { final _dio = Session().dio; @override Future<CommunityResponseDTO> fetchCommunities() async { Response<dynamic> response = await _dio.get('get/community/path'); final responseDto = CommunityResponseDTO.fromJson(response.data); return responseDto; } } CommunityRemoteDataSource 의 구현체 CommunityRemoteDataSourceApiImpl 를 만들어서 사용중입니다.ApiImpl 은 실제 서버와 통신중 이며,http 라이브러리 Dio를 사용하고 있습니다. 여기서 테스트를 위해 DioMock 객체를 만들어서 사용하고자 합니다. 원래 CommunityRemoteDataSourceApiImpl 에 final _dio = Session().dio; 로 싱글턴으로 dio를 내부에 객체를 생성하고 있는데 이거를 주입받는 식으로 변경하여 테스트 시만 CommunityRemoteDataSourceApiImpl(DioMock()) 을 넣는 것인지, 아니면 CommunityRemoteDataSourceApiMockImpl 를 새로 또 만드는지 궁금합니다.만약 CommunityRemoteDataSourceApiImpl(DioMock()) 로 주입을 받는 식이라면Response<dynamic> response = await _dio.get('get/community/path'); final responseDto = CommunityResponseDTO.fromJson(response.data); 해당 코드들이 Dio() 일 때, DioMock() 일 때 달라야 할 것 같은데 어떻게 처리하는 것이 맞는지 궁금합니다. 감사합니다.
-
해결됨[iOS] Swift Modern Collection View & MVVM 패턴 가이드
MVVM 패턴 구현에서 rx binding관련 질문입니다.
안녕하세요 :) MVVM 패턴 구현 강의를 들으면서 질문이 생겼습니다.혹시 아래처럼 button들의 tap이벤트를 바로 바인딩하지 않고 중간에 subject를 트리거로 만들어 따로 연결하는 이유가 있을까요 ??rx.tap이 ControlEvent라서 ViewModel의 trigger와 바로 바인딩해줘도 괜찮을 것 같다는 생각이 들었습니다. let input = ViewModel.Input(tvTrigger: buttonView.tvButton.rx.tap.asObservable(), movieTrigger: buttonView.movieButton.rx.tap.asObservable())
-
해결됨[iOS] Swift Modern Collection View & MVVM 패턴 가이드
단축키 질문
안녕하세요! 강의하시다 보면 함수 인자에서 클로저로 자동으로 변환하시는데 혹시 단축키가 있나요?
-
해결됨[iOS] Swift Modern Collection View & MVVM 패턴 가이드
NSCollectionLayoutSize 질문
섹션1 - 3번 레이아웃 구현 시,createListCarouselSection() 메서드를 구현할 때, itemSize: NSCollectionLayoutSize 에 heightDimension 인자 세팅값으로 .fractionalHeight(1.0)으로 세팅하는데 1.0으로 하니까 아이템이 그냥 1개만 세팅되네요. (0.3)으로 세팅하니까 3줄로 나오는데, 혹시 제가 빼먹은 부분이 있을까요? 감사합니다.
-
미해결C# WPF .NET Core(7.0)
MVVM 2강
안녕하세요MVVM2강에서 4:19초 실행화면에서 버튼이 활성화 안되는데.. 왜 그런지 못찾겠습니다.항목클릭시 TextBox에 이름,나이는 들어오는데.. txt.Lenght가 값이 안들어 와서 false만 되네요혹시 닷넷 버전과 관련이 있을까요??? public class PersonModel : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; private void NotifyPropertyChanged([CallerMemberName] String propertyName = "") { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); }================================<TextBox x:Name="tbox1" Width="150" Text="{Binding ElementName=lv,Path=SelectedItem.Name, Mode = TwoWay, UpdateSourceTrigger=PropertyChanged}"/><TextBox Width="150" Text="{Binding ElementName=lv, Path=SelectedItem.Age, Mode = TwoWay, UpdateSourceTrigger=PropertyChanged}"/>================================= public bool CheckMsg(string txt){if(txt.Length > 0){return true;}else{return false; //글자가 없으면 false}=====================================
-
해결됨[iOS] Swift Modern Collection View & MVVM 패턴 가이드
섹션 3. Modern collection view 심화-snapshot 구현 -
섹션 3. Modern collection view 심화-snapshot 구현 -tv 데이터 적용에 있는 예제 파일을 다운로드 해서, 실행하면 아래의 error을 내고 exception을 발생시킵니다. 아마도 1)http://themoviedb.org에 로그인이 안되고자료를 받지 못했서 발생한 문제 인듯합니다.현재 해당 싸이드에 계정을 만들어지지 않습니다. (해당 싸이트로 부터 인증 메일이 오지 않음) 2) rxswift가 학습되지 않고, 계정이 만들어 지지 않아 섹션 2는 건너 띠고 section3을 보니 이런 문제가 발생하네요. 3알째 인증메일이 오지 않고, support에 메일을 보내도 대꾸가 없습니다. 3) 일단, collectionView 디자인만 보는 좋은 방법이 없을까요? 감사합니다. 2023-11-01 11:06:39.462: Network.swift:25 (getItemList(path:)) -> subscribed2023-11-01 11:06:40.027: Network.swift:25 (getItemList(path:)) -> Event next(103 bytes)2023-11-01 11:06:40.031: Network.swift:25 (getItemList(path:)) -> isDisposed/Users/besthwang/Library/Developer/Xcode/DerivedData/TVMOVIE-fynfoxlfotueejaqckjipwildmop/SourcePackages/checkouts/RxSwift/Sources/RxCocoa/Observable+Bind.swift:100: Fatal error: Binding error: keyNotFound(CodingKeys(stringValue: "page", intValue: nil), Swift.DecodingError.Context(codingPath: [], debugDescription: "No value associated with key CodingKeys(stringValue: \"page\", intValue: nil) (\"page\").", underlyingError: nil))2023-11-01 11:06:40.046882+0900 TVMOVIE[3229:2099837] /Users/besthwang/Library/Developer/Xcode/DerivedData/TVMOVIE-fynfoxlfotueejaqckjipwildmop/SourcePackages/checkouts/RxSwift/Sources/RxCocoa/Observable+Bind.swift:100: Fatal error: Binding error: keyNotFound(CodingKeys(stringValue: "page", intValue: nil), Swift.DecodingError.Context(codingPath: [], debugDescription: "No value associated with key CodingKeys(stringValue: \"page\", intValue: nil) (\"page\").", underlyingError: nil)) 등의
-
해결됨Flutter 중급 3편 - 의존성 주입 가이드
go router 의존성
안녕하세요강의 잘 보고 있습니다. go router 와 dio 를 이용해서 프로젝트를 진행하고 있는데요,dio 에서 interceptor 를 사용해 토큰을 보내고 응답코드에 따라 상태를 보내고 있습니다. 그러나 dio 를 통해 403 코드가 발생했을 시 이전 화면으로 보내거나 로그인 페이지로 보내하는 경우 부득이하게 dio에서 (interceptor) context 를 사용하게 됩니다. 이런 경우 view 에서 부터 view model 을 통해 remote 까지 context를 가져가야하는데 테스트를 어렵게하는 요인이라고 생각이 됩니다. 바람직하게 redirection 을 처리하려면 어떻게 해야 되는지 궁금합니다.감사합니다.