묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결앱 개발 기초부터 실전까지 하나로 끝내는 Swift & iOS 마스터 클래스
Xcode에 gpx파일이 인식이 안됩니다.
안녕하십니까? 강사님섹션 26.의 308강을 실습 중입니다.gpx 파일이 xcode에 인식이 잘 안됩니다.시뮬레이팅이라 넘어가도 될 사항이기도 한데, 한번 눈으로 확인해보고 싶은 마음이 들어서 다시 질문 올립니다. 혹시 몰라 XCode와 맥북을 여러 차례 재시동도 해보았습니다.바쁘시더라도 한번 봐주시면 감사하겠습니다.
-
미해결Flutter 중급 1편 - 클린 아키텍처
sealed class 사용시 기능은 동작하지만 Radio위젯에 선택 표시가 안되는 부분 질문
sealed class 사용시 Radio위젯에 선택 표시가 안되는 이유는 Radio위젯에 value == groupValue 값이 같아도 객체 참고가 다르기 때문에 발생되는 것으로 확인했습니다. orderType비교시 == 값이 같은 경우 가능하도록 내용을 수정했는데 제대로 수정했는지 궁금해서 문의드립니다. *참조코드 2 내용 1.*참조코드 2 내용 수정이 잘되었는지 확인2.freezed 사용시 자동으로 만들어 주는 부분인데 seald 클래스 사용시 팁이 있는지 궁금합니다. 3.copyWith 부분도 추가하는 형태도 궁금합니다. 참조코드 1import 'package:flutter/material.dart'; import 'package:flutter_note_app/domain/model/util/note_order.dart'; class OrderSection extends StatelessWidget { final NoteOrder noteOrder; final Function(NoteOrder noteOrder) onOrderChanged; const OrderSection({ super.key, required this.noteOrder, required this.onOrderChanged, }); @override Widget build(BuildContext context) { return Column( children: [ Row( children: [ Radio<NoteOrder>( value: NoteOrder.title(noteOrder.orderType), groupValue: noteOrder, onChanged: (NoteOrder? value) { onOrderChanged(NoteOrder.title(noteOrder.orderType)); }, activeColor: Colors.white, ), const Text('제목'), Radio<NoteOrder>( value: NoteOrder.date(noteOrder.orderType), groupValue: noteOrder, onChanged: (NoteOrder? value) { onOrderChanged(NoteOrder.date(noteOrder.orderType)); }, activeColor: Colors.white, ), const Text('날짜'), Radio<NoteOrder>( value: NoteOrder.color(noteOrder.orderType), groupValue: noteOrder, onChanged: (NoteOrder? value) { onOrderChanged(NoteOrder.color(noteOrder.orderType)); }, activeColor: Colors.white, ), const Text('색상'), ], ), ], ); } } 참조코드 2import 'package:flutter_note_app/domain/model/util/order_type.dart'; sealed class NoteOrder { final OrderType orderType; const NoteOrder(this.orderType); factory NoteOrder.title(OrderType orderType) = NoteOrderTitle; factory NoteOrder.date(OrderType orderType) = NoteOrderDate; factory NoteOrder.color(OrderType orderType) = NoteOrderColor; @override bool operator ==(Object other) { return runtimeType == other.runtimeType && other is NoteOrder && other.orderType == orderType; } @override int get hashCode => Object.hash(runtimeType, orderType); } class NoteOrderTitle extends NoteOrder { NoteOrderTitle(super.orderType); } class NoteOrderDate extends NoteOrder { NoteOrderDate(super.orderType); } class NoteOrderColor extends NoteOrder { NoteOrderColor(super.orderType); } - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결앨런 iOS 앱 개발 (15개의 앱을 만들면서 근본원리부터 배우는 UIKit) - MVVM까지
수강 기간 연장 부탁드려도 될까요?
앨런님 안녕하세요!좋은 강의 잘 듣고 있습니다.현재 스토리보드 앱 말고, 소스 코드로 앱 만드는 부분을 시간이 촉박해서 배속 듣기 밖에 못했습니다..(실습을 못했습니다..)이 부분이 너무 아쉬워서 실습을 하면서 다시 듣고 싶은데...수강기간 연장 부탁드려도 될까요 ..?
-
미해결Flutter 중급 1편 - 클린 아키텍처
sealed class 사용시 The getter 'orderType' isn't defined for the type 'NoteOrder<dynamic>' 오류
The getter 'orderType' isn't defined for the type 'NoteOrder<dynamic>' 오류 관련으로 문의드립니다. sealed class에서 noteOrder.orderType를 접근할때 *참고사진1의 오류가 발생했습니다.해당 오류는 sealed class 내부에 noteOrder.orderType에 접근 할수 없다라는 내용으로 *참고코드 2에서 *참고코드 3와 같이 sealed class에서 getter를 선언하고 각 클래스에서 해당 값을 사용할수 있도록 @override로 수정했으나 의문점이 생겨 문의드립니다. 1.*참고코드3 sealed class 수정사항이 맞는지 궁금합니다.2.*참고코드3 사항이 맞는 경우 sealed class에서 getter로 OrderType get orderType; 사용했다면나머지 class부분에서 orderType를 강제로 구현을 해야하기 때문에 orderType를 사용하지 않는 class 작성시 문제가 될것 같습니다. 혹시 해당 사항에서는 어떻게 해야할찌 궁금합니다. *오류 내용*참고사진1 *order_section.dart*참고 수정코드1import 'package:flutter/material.dart'; import 'package:flutter_note_app/domain/model/util/note_order.dart'; class OrderSection extends StatelessWidget { final NoteOrder noteOrder; final Function(NoteOrder noteOrder) onOrderChanged; const OrderSection({ super.key, required this.noteOrder, required this.onOrderChanged, }); @override Widget build(BuildContext context) { return Column( children: [ Row( children: [ Radio<NoteOrder>( value: NoteOrder.title(noteOrder.orderType), groupValue: noteOrder, onChanged: (NoteOrder? value) { onOrderChanged(NoteOrder.title(noteOrder.orderType)); }, ), ], ), ], ); } } *note_order.dart*참고 코드2import 'package:flutter_note_app/domain/model/util/order_type.dart'; sealed class NoteOrder<T> { factory NoteOrder.title(OrderType orderType) = NoteOrderTitle; factory NoteOrder.date(OrderType orderType) = NoteOrderDate; factory NoteOrder.color(OrderType orderType) = NoteOrderColor; } class NoteOrderTitle<T> implements NoteOrder<T> { OrderType orderType; NoteOrderTitle(this.orderType); } class NoteOrderDate<T> implements NoteOrder<T> { OrderType orderType; NoteOrderDate(this.orderType); } class NoteOrderColor<T> implements NoteOrder<T> { OrderType orderType; NoteOrderColor(this.orderType); } *참고 코드3(수정함)import 'package:flutter_note_app/domain/model/util/order_type.dart'; sealed class NoteOrder<T> { OrderType get orderType; factory NoteOrder.title(OrderType orderType) = NoteOrderTitle; factory NoteOrder.date(OrderType orderType) = NoteOrderDate; factory NoteOrder.color(OrderType orderType) = NoteOrderColor; } class NoteOrderTitle<T> implements NoteOrder<T> { @override OrderType orderType; NoteOrderTitle(this.orderType); } class NoteOrderDate<T> implements NoteOrder<T> { @override OrderType orderType; NoteOrderDate(this.orderType); } class NoteOrderColor<T> implements NoteOrder<T> { @override OrderType orderType; NoteOrderColor(this.orderType); } - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결Flutter 중급 1편 - 클린 아키텍처
유즈케이스 관련하여 질문 드립니다.
강의 정말 잘 듣고 있습니다! 혹시 유즈케이스 같은 경우는 레포지토리의 함수가 10개라고 가정하면 10개 다 만들어주는 편인가요??
-
미해결Flutter 중급 1편 - 클린 아키텍처
mockito사용시 오류 해결법
mockito 사용시 최신버전 mockito: ^5.4.6으로 사용했을때 freeze와 동일한 오류가 나는 경우analyzer문제 인것 같은데 mockito 상위버전 사용시 analyzer 높아서 빌드가 불가능한 현상이 있었습니다. clean후 아래 방법을 이용해서 빌드 진행하면 해결됩니다.! dependencies: analyzer: ^6.0.0dev_dependencies: mockito: ^5.0.6 사용 - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결Flutter 중급 1편 - 클린 아키텍처
sealed class 사용 문의2
알려주신 sealed class으로 내용 작성 중에 선생님이 의도하신 부분으로 작성을 했는지 문의드립니다. 1.get_notes_use_case.dart 부분 switch case 이중 작성 부분2.switch case 이중 작성 부분 *참고코드4 처럼 final을 안쓰고 사용가능 여부 note_order.dart*NoteOrder sealed class 구현부*참고 코드1import 'package:flutter_note_app/domain/model/util/order_type.dart'; sealed class NoteOrder<T> { factory NoteOrder.title(OrderType orderType) = NoteOrderTitle; factory NoteOrder.date(OrderType orderType) = NoteOrderDate; factory NoteOrder.color(OrderType orderType) = NoteOrderColor; } class NoteOrderTitle<T> implements NoteOrder<T> { OrderType orderType; NoteOrderTitle(this.orderType); } class NoteOrderDate<T> implements NoteOrder<T> { OrderType orderType; NoteOrderDate(this.orderType); } class NoteOrderColor<T> implements NoteOrder<T> { OrderType orderType; NoteOrderColor(this.orderType); } order_type.dart*OrderType 구현부 sealed class 구현부*참고 코드2sealed class OrderType<T> { factory OrderType.ascending() = Ascending; factory OrderType.descending() = Descending; } class Ascending<T> implements OrderType<T> { Ascending(); } class Descending<T> implements OrderType<T> { Descending(); } get_notes_use_case.dart*notes use case 구현부*참고 코드3import 'package:flutter_note_app/domain/model/note.dart'; import 'package:flutter_note_app/domain/model/util/note_order.dart'; import 'package:flutter_note_app/domain/model/util/order_type.dart'; import 'package:flutter_note_app/domain/repository/note_repository.dart'; class GetNotesUseCase { final NoteRepository repository; GetNotesUseCase(this.repository); Future<List<Note>> call(NoteOrder noteOrder) async { List<Note> notes = await repository.getNotes(); switch (noteOrder) { case NoteOrderTitle(orderType: final orderType): switch (orderType) { case Ascending(): notes.sort((a, b) => a.title.compareTo(b.title)); break; case Descending(): notes.sort((a, b) => -a.title.compareTo(b.title)); break; } break; case NoteOrderDate(orderType: final orderType): switch (orderType) { case Ascending(): notes.sort((a, b) => a.timestamp.compareTo(b.timestamp)); break; case Descending(): notes.sort((a, b) => -a.timestamp.compareTo(b.timestamp)); break; } break; case NoteOrderColor(orderType: final orderType): switch (orderType) { case Ascending(): notes.sort((a, b) => a.color.compareTo(b.color)); break; case Descending(): notes.sort((a, b) => -a.color.compareTo(b.color)); break; } break; } return notes; } } *저번 질문에서 선생님이 알려준 final 안쓰고 사용할수 있는 팁*참고 코드4switch (event) { case ChangeColor(): _changeColor(event.color); break; case SaveNote(): _saveNote(event.id, event.title, event.content); break; } - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
해결됨앨런 Swift Concurrency for Swift 6 (Part-1)
5강 weak self 처리 관련
안녕하세요! Swift Concurrency 강의 너무 잘 듣고 있습니다. 5강 weak self 처리 관련하여 질문이 있는데요. Task 클로저의 경우 작업이 끝나는 즉시 내부 클로저가 소멸하기 때문에 클로저 내부에서 캡처된 참조도 해조되어 강한 순환 참조가 발생하지 않는다고 나와있는데, 이는 DispatchQueue에 전달하는 클로저에서도 마찬가지 아닌가요? DispatchQueue에 전달된 클로저도 작업이 완료되면 메모리에서 해제되는 것으로 알고 있어서, 약간의 혼란이 생겼습니다. DispatchQueue.global().async { self.processData() // self를 강하게 캡처 } // 클로저가 실행되는 동안 self가 메모리에 유지되며, 작업 완료 후 클로저가 해제되면 self도 참조카운트가 감소되는 것으로 알고 있습니다.그렇다면 Task와 DispatchQueue의 차이점은 'self를 명시적으로 쓸 필요 없다/써야 한다' 뿐이지, 순환 참조 관련된 처리는 다르지 않지 않을까 하는 고민인데요. 뭔가 제가 잘못 이해한 부분이 있을 것 같습니다. 혹시 이 부분 설명 해주실 수 있으실까요? 더불어서 Task를 쓰면 순환 참조가 생길 가능성 자체도 없는 것인지도 궁금합니다. 감사합니다 😊
-
미해결앨런 iOS 앱 개발 (15개의 앱을 만들면서 근본원리부터 배우는 UIKit) - MVVM까지
수강 기간 연장 신청 요청드립니다.
안녕하세요 앨런님!좋은 강의 잘 듣고 있습니다. 강의의 수강 기간이 곧 만료되어 수강 연장을 요청드리고자 이렇게 글을 남깁니다.업무 병행 중이라 학습 진도가 예상보다 늦어졌고, 해당 강의를 끝까지 제대로 수강하고 싶은 마음이 큽니다.혹시 가능하다면 강의 기간을 연장해주실 수 있을지 여쭤봅니다.항상 좋은 강의 감사드립니다!
-
해결됨앱 개발 기초부터 실전까지 하나로 끝내는 Swift & iOS 마스터 클래스
API 출력 오류.. 도와주세요.
안녕하세요 강사님 섹션22의 Step 13을 실습하고 있습니다.화면위에는 CurrentWeather를 아래쪽에는 Forecast를 출력시키려는데, 잘 안되네요.현재날씨를 출력하는건 잘 나오는데 Forcast는 출력이 안됩니다.갯수를 찍어보니 0이 나옵니다.그리고 결과를 콘솔에 찍어보니 실패가 나온느거 같은데요. 어느 부분이 잘못되었는지 찾기가 힘드네요..힌트라도 주실 수 있나해서 글을 올립니다.
-
해결됨Part2: 초중급 iOS 인스타그램 클론(SwiftUI, MVVM, Firebase, 2024)
75강 실시간으로 팔로우수 안늘어나는 이유?
12:34 부분처럼 팔로잉, 팔로우 버튼을 눌렀을 때 해당 숫자의 변화가 없어요ㅜ
-
해결됨SwiftUI의 Property Wrapper(@State, @Binding...)
예제 코드가 안나와요
예제 코드가 안나와요
-
미해결앱 개발 기초부터 실전까지 하나로 끝내는 Swift & iOS 마스터 클래스
play ground 오류?? 원인을 알고 싶습니다.
안녕하세요. 강사님질문 드린지 얼마안되었는데, 다시 질문 드립니다.섹션22의 Step #10 강의를 실습하던중에 문제가 생겨서 여러번 해결해보려 했는데, 잘 안되어서질문드립니다.말씀하신대로 날씨 API는 잘 되어서 play ground에서 API구현을 실습했습니다. 두번째와 세번째 그림에서 보시다시피Ignoring duplicate libraries라는 오류가 뜹니다.실행이 안되고요, Failed to launch process. .... 이런 에러도 있네요.. 또한 그림에는 없지만 RPC Server 오류도 납니다.정확하게 어디가 문제인지 알고 싶습니다.부탁드리겠습니다.
-
해결됨앱 개발 기초부터 실전까지 하나로 끝내는 Swift & iOS 마스터 클래스
런타임 오류... 부탁드립니다.
강사님 요즘에 계속 질문사항을 올리고 있는 열혈 수강생입니다.섹션21. ATS 강의를 수강하면서 실습을 하고 있는데요..Book 프로젝트를 실습하던중에 DetailView화면에서 북마크버튼을 터치하면 런타임 오류가 납니다.시뮬레이터는 Iphone 15 Pro로 했는데, 런타임 오류가 납니다.어디가 잘못됐는지 도통 잡히지가 안네요.조언 부탁드립니다.
-
미해결Flutter 중급 1편 - 클린 아키텍처
sealed class 사용 문의
안녕하세요 강의중에 freezed3.0 변경 이후sealed class 작성과 view_model에서 사용을 제대로 사용하고 있는지 문의드립니다. *1.switch 문 키워드 사용ex case SaveNote(:final id, :final title, :final content):2.viewModel class 연결부분ex _changeColor(color); AddEditNoteEvent(sealed class)코드 sealed class AddEditNoteEvent<T> { factory AddEditNoteEvent.changeColor(int color) = ChangeColor; factory AddEditNoteEvent.saveNote(int? id, String title, String content) = SaveNote; } class ChangeColor<T> implements AddEditNoteEvent<T> { final int color; ChangeColor(this.color); } class SaveNote<T> implements AddEditNoteEvent<T> { final int? id; final String title; final String content; SaveNote(this.id, this.title, this.content); } view model(onEvent)- 코드 import 'package:flutter/material.dart'; import 'package:flutter_note_app/domain/model/note.dart'; import 'package:flutter_note_app/domain/repository/note_repository.dart'; import 'package:flutter_note_app/presentation/add_edit_note/add_edit_note_event.dart'; class AddEditNoteViewModle with ChangeNotifier { final NoteRepository repository; int _color = Colors.orange.value; int get color => _color; AddEditNoteViewModle(this.repository); void onEvent(AddEditNoteEvent event) { switch (event) { case ChangeColor(:final color): _changeColor(color); break; case SaveNote(:final id, :final title, :final content): _saveNote(id, title, content); break; } } Future<void> _changeColor(int color) async { _color = color; notifyListeners(); } Future<void> _saveNote(int? id, String title, String content) async { if (id == null) { await repository.inserNote( Note( title: title, content: content, color: _color, timestamp: DateTime.now().millisecondsSinceEpoch, ), ); } else { await repository.updateNote( Note( id: id, title: title, content: content, color: _color, timestamp: DateTime.now().millisecondsSinceEpoch, ), ); } } }
-
미해결Flutter 중급 1편 - 클린 아키텍처
freezed3.0에서 build시 when생성되지 않습니다.
freezed: ^3.0.6freezed_annotation: ^3.0.0 으로 진행후 notes_event.freezed.dart 파일에 when, map생성되지 않습니다. sealed도 써보고 abstract를 지우고 해도 마찬가지 인데 혹시 방법이 있을까요? 코드 내용import 'package:flutter_note_app/domain/model/note.dart';import 'package:freezed_annotation/freezed_annotation.dart';part 'notes_event.freezed.dart';@freezedsealed class NotesEvent with _$NotesEvent {const factory NotesEvent.loadNotes() = LoadNotes;const factory NotesEvent.deleteNote(Note note) = DeleteNote;const factory NotesEvent.restoreNote() = RestoreNote;} -------------------------------------------freezed 3.0.0 변경점 로그3버전부터 삭제가 되었군요. 인터넷에 when사용관련으로 옵션 등등 찾아서 했지만 모두 생성이 안되었습니다. 이제 when은 사용하지 않는게 좋을것 같습니다. import 'package:flutter_note_app/presentation/notes/notes_event.dart';void handleEvent(NotesEvent event) { switch (event) { case LoadNotes(): print("Loading notes..."); break; case DeleteNote(): print("Deleting"); break; case RestoreNote(): print("Restoring note"); break; }}dart3.0 부터 swich문이 추천이라고하네요! 선생님 Flutter Live Templeate 쪽에도 올라왔네요 템플릿 참고해주세요!https://gravel-pike-705.notion.site/Flutter-Live-Templeate-579bac3070754bdf8fa10afe4ebe8c92
-
미해결개발을 위한 프로그래밍적 사고 기르기
[세션 7] 내 학습 방법을 돌아보며 공유해보아요
이번 세션은 어떻게 학습하셨나요?강의를 들으면서 어떤 생각의 변화나 깨달음이 있었나요?그 변화나 깨달음을, 지금 나의 학습이나 작업에 어떻게 적용해볼 수 있을까요? 💬 부담 갖지 말고 편하게 써주세요!혼자만의 정리도 좋고, 다른 사람들과 공유해도 좋아요.여러분의 방식이 다른 사람에게도 큰 도움이 될 수 있어요 :)
-
미해결개발을 위한 프로그래밍적 사고 기르기
[세션 6] 내 학습 방법을 돌아보며 공유해보아요
이번 세션은 어떻게 학습하셨나요?강의를 들으면서 어떤 생각의 변화나 깨달음이 있었나요?그 변화나 깨달음을, 지금 나의 학습이나 작업에 어떻게 적용해볼 수 있을까요?
-
미해결개발을 위한 프로그래밍적 사고 기르기
[세션 5] 내 학습 방법을 돌아보며 공유해보아요
이번 세션은 어떻게 학습하셨나요?강의를 들으면서 어떤 생각의 변화나 깨달음이 있었나요?그 변화나 깨달음을, 지금 나의 학습이나 작업에 어떻게 적용해볼 수 있을까요?💬 부담 갖지 말고 편하게 써주세요!혼자만의 정리도 좋고, 다른 사람들과 공유해도 좋아요.여러분의 방식이 다른 사람에게도 큰 도움이 될 수 있어요 :)
-
미해결개발을 위한 프로그래밍적 사고 기르기
[세션 4] 내 학습 방법을 돌아보며 공유해보아요
이번 세션은 어떻게 학습하셨나요?강의를 들으면서 어떤 생각의 변화나 깨달음이 있었나요?그 변화나 깨달음을, 지금 나의 학습이나 작업에 어떻게 적용해볼 수 있을까요?💬 부담 갖지 말고 편하게 써주세요!혼자만의 정리도 좋고, 다른 사람들과 공유해도 좋아요.여러분의 방식이 다른 사람에게도 큰 도움이 될 수 있어요 :)