묻고 답해요
130만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[Lv.2] 레벨업 - SwiftUI intermediate with Core Data
코어데이터에 중복값 입력 방지
강사님, 안녕하세요. 강의를 보면서 코드를 작성하던 중에 코어 데이터에서 값을 입력 할 때에 중복값이 계속 들어가는것을 확인하고 이것을 막고자 합니다. 어떤 방법으로 해야 하는지요? 아니면 제가 강의 중에서 놓친 부분이 있을 수도 있으니 해당 영상의 위치를 알려주시면 살펴보겠습니다.감사합니다.
-
해결됨[Lv.1] 누구나 할 수 있는 - SwiftUI Basic with iOS 17
MVVM에서 처음
import SwiftUI @main struct mountainApp: App { var body: some Scene { WindowGroup { AuthView() .environmentObject(AuthViewModel()) } } } 1번 경우에는 @StateObject 없이 바로 AuthViewModel 객체로 environmentObject에 넣어주면 문제가 발생하나요?
-
미해결성공적인 진짜 iOS 개발자 되기 [기초부터 실무까지]
테이블 뷰 데이터 업데이트 관련 질문
안녕하세요 강사님! 영상 잘 보고 공부하고 있습니다!영상에서 combine을 사용하여 데이터 바인딩 하셨는데 제가 이해하기로는 @Published가 붙은 데이터가 업데이트 되면 그것을 구독하는 userName3, userAge3 메서드가 호출되고 그래서 테이블 뷰 안에 데이터가 변경되는 것으로 알고있는데 reloadData를 호출하지 않으면 변경이 이루어지지 않습니다. reloadData를 호출하여 테이블 뷰의 변경사항을 업데이트 한다면 굳이 각각의 셀에 데이터를 바인딩 할 필요 없이 셀에서는 배열 안에 데이터를 그냥 가져오고 viewDidLoad안에서 데이터가 변경되면 reloadData를 호출하도록 구현하는 것과 차이점이 있을까요?
-
해결됨진짜 왕초보 iOS 배우기(SwiftUI, SwiftData, 2024)
강의 완강하고 앱을 만들어봤어요!
안녕하세요 애그마 쌤 !얼마전 강의 완강하고 4일 동안 틈틈히 개발해서 간단한 앱을 만들어봤습니다,, ㅋㅋㅋ!!자랑하고 싶은데.. 메일 주소가 없어서 일단 여기에 올려요 ㅋㅋㅋ ㅠ직접 만든 첫 앱이라 기분이 좋네요 ㅋㅋ 심사 대처까지 강의에서 알려주셔서 한 번만 리젝당하고 빠르게 통과됐어요 ㅎㅎ좋은 강의 제공해주셔서 감사합니다!!
-
미해결Apple 출신 개발자의 SwiftUI Basic Part 1 기초튼튼
파트2 개강 예정시기
안녕하세요, 혹시 파트2 개강 예정시기를 대략적으로 알 수 있을까요?
-
해결됨Flutter 중급 1편 - 클린 아키텍처
서버에서 데이터를 가져와서 사용하는 경우...
서버에서 데이터를 가져와 앱에 로드 및 업데이트 하는 과정에서 질문이 생겼습니다 ^^;"서버에서 데이터-> 로컬 db에 저장 -> 앱에서 사용""데이터 업데이트 -> 서버로 update request ->서버에서 데이터 request -> 로컬 db를 업데이트" 하는 코드에서내부 db에서 데이터를 가져오거나 업데이트하는 부분은 datasource 영역으로 이해가 되는데서버에서 데이터를 request하는 코드들도 datasource의 영역이라고 봐야할까요?
-
미해결앨런 iOS 앱 개발 (15개의 앱을 만들면서 근본원리부터 배우는 UIKit) - MVVM까지
MVVM 아키텍처 설명 1 (MVC부터 다시 설명) (업데이트-3강) 강의 질문있습니다.
MVVM패턴에 대해 공부하는 중 MVC 패턴에 헷갈리는 부분이 생겨서 질문드립니다.MVC패턴은 코드 수가 많아지면 컨트롤러가 비대해질 수 있어 유지보수가 힘들고 재사용이 힘들어 진다고 알고 있습니다.여기서 제가 궁금한 건 그렇다면 뷰와 컨트롤러의 코드를 따로 분류하여 MVC 패턴을 적용하려 할 때1. 뷰에서 이벤트 처리 함수를 작성해야하는 지2. 아니면 컨트롤러에서 이벤트 처리 함수를 작성해야하는 지어떤 방식을 통해 이벤트를 컨트롤해야 되나요?(물론 뷰에서 다룰 수 없는 부분은 컨트롤러에서 처리해야 하는 건 이해했습니다. 예를 들어 Segue의 Perform, Prepare같은 함수 작성 시)머릿속에서 자꾸 "사용자의 Action은 컨트롤러가 수행해야한다" 이 내용이 맴돌아서 뷰의 프로퍼티에 연결된 함수도 빼줘야하나? 하고 너무 헷갈립니다.
-
미해결Flutter 초입문 왕초보편
현업에서 로컬 DB 활용시 Hive 사용했을때 구현 패턴 문의
main 상단에 Box<ToDO> 로 묶어 전역으로 사용했는데요, 강의 내 말씀하신대로 ... 토이프로젝트가 아닌이상 뭐 좋은방법은 아닐 것 같습니다. 실제로 구현패턴은 어떻게 현업에서 사용하는지 궁금합니다.간단하게 링크를 주셔도 될 것 같습니다. Repository 같은거로 만들어서 넣고빼고 하는걸 메서드 만들어두는 패턴이 있다면 샘플이 궁금합니다.
-
미해결앨런 iOS 앱 개발 (15개의 앱을 만들면서 근본원리부터 배우는 UIKit) - MVVM까지
활용-10 앱 / 클로저 방식으로 셀에서 일어난 동작의 전달 (활용 앱85강) 질문있습니다.
아래는 ToDoCell과 ViewController의 코드 중 일부입니다.1번째 코드var updateButtonPressed: (ToDoCell) -> Void = { (sender) in } 2번째 코드@IBAction func updateButtonTapped(_ sender: UIButton) { updateButtonPressed(self) }3번째 코드cell.updateButtonPressed = { [weak self] ( sender )in self?.performSegue(withIdentifier: "ToDoCell", sender: indexPath) }updateButtonPressed 함수의 매개변수를 ToDoCell로 설정하고 updateButtonPressed(self)에서 왜 자기자신을 전달하는 지 잘 모르겠습니다. performSegue를 수행하기 위해 전달받은 매개변수 Sender는(3번째 코드에서) 클로저 수행에 영향이 없지 않나요? 실제로 매개변수를 주지 않는 방식으로 코드를 수정하고 앱을 실행해 봤는데 셀의 저장과 수정에는 지장이 없더라구요.
-
미해결앨런 iOS 앱 개발 (15개의 앱을 만들면서 근본원리부터 배우는 UIKit) - MVVM까지
선생님 혹시 카메라
카메라 필터 관련으로 추가 강의 해주시면 안될까요?필터앱 만들고싶은데 너무어려워요!ㅠㅠ
-
해결됨진짜 왕초보 iOS 배우기(SwiftUI, SwiftData, 2024)
textfield로 입력받은 데이터 button 액션으로 출력
안녕하세요.강의 잘 듣고 있습니다.xcode 버그인건지 모르겠어서 질문드립니다. textfield로 입력받은 데이터를 Button의 action에서 출력하는 부분입니다.Canvas에서 데이터 입력 후 버튼을 눌러도 출력이 되지 않습니다.run을 실행해서 테스트 해봐도 동일합니다. 선생님 코드를 복사해서 실행해봐도 동일한데,xcode의 어떤 문제(버그, 오류, 버전 등)인 건지 가늠이 안가 문의드립니다.
-
해결됨진짜 왕초보 iOS 배우기(SwiftUI, SwiftData, 2024)
질문 드립니다.
안녕하세요 애구마님우선 강의 정말 유익하게 잘 들었고, 궁금한점이 있어서 질문드려봅니다. 통신수업파트에서 통신이 ios 어려운 관문 3~4가지 중에 하나라고 하셨는데요.다른것들이 무엇인지도 말씀해주실수있나요? 수업과 관계없는 질문이긴하지만.. 저는 지금 swift, swiftui를 공부중인데요. 인터넷에 찾아보면 취업이 목적이면 결국엔 스토리보드를 공부해야 한다고 하는데요. swiftui를 어느정도 공부한 후에 스토리보드를 시작해도 상관없는건가요?
-
미해결앨런 iOS 앱 개발 (15개의 앱을 만들면서 근본원리부터 배우는 UIKit) - MVVM까지
수료증 발급이 안되네요
빈화면만 나와요!이건 인프런측에 문의해야 할까요?
-
미해결Flutter 중급 2편 - 실전 앱 개발 - 미국 주식 앱 (with 클린 아키텍처)
수업과 관련이 없지만 물을 곳이 없어...교수님께 여쭙니다..
dto랑 이미지 파일을 dio로 이용하여 post 하려는데 뭘해도 400, 415 등등 에러가 나옵니다 혹시 이유를 알 수 있을까요?... 수업내용이 아닌 질문 죄송합니다. Future<void> postUser(UserInfo userDto, XFile? imageFile) async { try { // Dio 인스턴스 생성 Dio dio = Dio(); // 멀티파트 요청 생성 FormData formData = FormData(); // Add userDto as a JSON part formData.fields.add(MapEntry('userDto', jsonEncode(userDto.toJson()))); // Add image file if (imageFile != null) { formData.files.add(MapEntry( 'image', await MultipartFile.fromFile(imageFile.path), )); } // Dio를 사용하여 POST 요청 보내기 Response response = await dio.post( 'http://43.200.217.158:8080/bookstore-0.0.1-SNAPSHOT/user', data: formData, options: Options( headers: { "Content-Type": "multipart/form-data", }, ), ); // 응답 확인 if (response.statusCode == 200) { print("User Data sent successfully"); } else { print('response.statusCode: ${response.statusCode}'); throw Exception("Failed to send data"); } } catch (e) { print("Failed to send post data: $e"); } } ------------------------------------------------------------------------------- 서버 코드 스프링 @PostMapping(value = "/user", consumes = {MediaType.APPLICATION_JSON_VALUE, MediaType.MULTIPART_FORM_DATA_VALUE}) public ResponseEntity<ApiResponse> save(@RequestPart UserDto userDto, @RequestPart MultipartFile image) { try { log.info("유저 생성 입장!!"); Long save = userService.save(userDto, image); return ResponseEntity.status(HttpStatus.OK).body(new ApiResponse("Created", "유저 생성 성공", save)); } catch (Exception e) { log.error("e={}", e); return ResponseEntity.status(HttpStatus.NOT_FOUND).body(new ApiResponse("NotFound", "유저 생성 실패", null)); } }
-
미해결Flutter 중급 1편 - 클린 아키텍처
뷰/뷰모델 작성 질문
강의를 수강하며 클린 아키텍쳐라는 개념을 처음 사용하다보니 미숙한 부분이 많다보니 질문이 많아지는 것 같습니다.^^; 페이지간 이동이 아닌, 하나의 페이지안에서 일부 위젯들만 변경되거나 노출/숨김되는 경우, 그러나 기능적으로는 분명한 차이가 있을 때, 뷰/뷰모델 작성은 어떻게 나누어서 하면 될까요?간단한 예를 들어보면 같은 배경에서 중앙에 배치 되는 위젯들만 PageScroll 또는 숨김/노출되는 상황입니다.첫 진입 -> 중앙에 시작 버튼 노출시작버튼 클릭 시 -> 시작 버튼 숨김/ 중앙에 비디오 선택창 노출비디오 선택 시 -> 비디오 선택창 숨김/비디오 플레이어 노출비디오 종료 시 -> 비디오 플레이오 숨김/ 다시보기 버튼 노출위젯의 배치로만 보았을 때는 1개의 view에 여러개의 component가 있는 형태이지만,기능적으로 구분하면 시작/비디오선택/비디오플레이/다시하기 이런식으로 4개의 view로도 구분할 수 있는 것 같아보입니다.강사님께서는 이럴 경우 어떤식으로 코드를 작성하시는지 궁금합니다.
-
미해결앨런 iOS 앱 개발 (15개의 앱을 만들면서 근본원리부터 배우는 UIKit) - MVVM까지
코드로 UI를 설계하다가 tableView.frame = bounds 이건 어떻게 이해하면 되나요?
테이블뷰를 코드로 설계하는 중에, 테이블뷰의 위치와 크기를 뷰 전체에 넣을려고 했는데, 오토레이아웃 말고 tableView.frame =view.bounds 이렇게해도 되더라구요 그래서 찾아보니까 frame은 superView를 기준으로 자기 위치 (origin)과 크기 (size)를 나타내느데 여기에 bounds를 대입한다? bounds는 자기를 기준으로 하는 위치와 크기잖아요? 그럼 tableView의 frame에 bounds를 대입한다는 것은 앞으로 tableView의 frame은 bounds와 같이 동작한다? 이렇게 이해하면 되나요? 좀 더 찾아보니까 bounds는 viewPort 같은거라고 하더라구요 화면을 바라보는 창문? 그럼 tableView.frame = view.bounds는 tableView의 frame의 위치와 크기에 view를 바라보는 전체 크기? 위치?를 대입한다? 이게 무슨 뜻인지 알려주세요~
-
해결됨아키텍처 패턴 with iOS - GUI Architecture Patterns(이론)
MVVM in iOS - 리액티브 프로그래밍, 자동바인딩과 수동바인딩에서 질문이있습니다
안녕하세요강사님WPF에서는 자동바인딩이 제공되기때문에 MVVM을 사용하는데있어서 이점이있다고 말씀을해주셨고 iOS에서는 자동바인딩을 시스템레벨에서 제공해주지않기때문에 그런점에서 iOS의 MVVM패턴은 등장배경에서의 이유로 쓰이고있는지 고민해봐야한다고 말씀을 해주셨는데 여기서 궁금한점이 combine의 published는 uikit에서도 사용이가능하고 이는 combine이라는 도구를 시스템레벨에서 제공해주기때문에 combine의 등장으로 자동바인딩이 iOS에서도 제공된다고 할수있는게 아닌가라는 생각이들었습니다결국 $를 통해 binding변수로 만들어주면 해당 published변수의 변화에따라 view가 업데이트되니까 이런점에서는 uikit도 시스템레벨에서 자동바인딩을 지원한다라고 말할수있는게아닌가라는 생각이들었습니다 혹시 이부분에대해서 강사님의 생각이 궁금합니다!
-
해결됨앨런 iOS 앱 개발 (15개의 앱을 만들면서 근본원리부터 배우는 UIKit) - MVVM까지
LoginProject에서 경고문이 뜹니다.
안녕하세요 좋은 강의 덕분에 공부하고 싶었던 ios에 대해서 잘 알아가고 있습니다 !로그인프로젝트를 만들다가 보니 사진과 같은 경고문이 뜨는데 해석해보니 ViewController.self를 쓰라고 하는거 같더라구요그래서 self대신 ViewController.self로 바꾸면 경고문은 없어지는데 이런 에러가 뜨면서 앱이 꺼집니다. 저 경고문은 그냥 무시하면 되는걸까요?? tf.addTarget(self, action: #selector(textFieldEditingChanged(_:)), for: .editingChanged)그리고 이 줄에서 self는 ViewController를 가르키는게 아니라 텍스트필드를 가르킨다고 생각하는게 맞을까요??
-
미해결UIKit - iOS14 실무 가이드 <iOS앱 진짜 개발자 되기>
키보드 떠 있는 상태 만들기
저는 검색창을 눌러도 키보드가 아예 뜨지 않는데 어떤 코드를 추가해야 할까요? extension ViewController: UISearchBarDelegate { func searchBarSearchButtonClicked(_ searchBar: UISearchBar) { term = searchBar.text requestMovieAPI() } }
-
미해결앨런 iOS 앱 개발 (15개의 앱을 만들면서 근본원리부터 배우는 UIKit) - MVVM까지
1개의 뷰컨트롤러에 여러 개의 view를 사용할 수 있나요?
안녕하세요강의를 듣다가 코드를 짜는 부분에서 공통으로 사용하는 부분이 있어서이를 따로 View로 만들어서 이를 viewController에 적용시키려고 합니다. 이 때 1개의 ViewController에 여러 개의 View를 담을 수 있나요?가능하다면 ViewController에 넣을 때 위치는 frame으로 하면 되나요? 아니면 간략하게라도 1개의 ViewController에 여러 View를 넣을 수 있을지 가이드라도 알려주시면 정말 감사합니다.. 어찌보면 강의와 상관없는 얘기일 수도 있는데.. 부탁드립니다.