ㅤ이번에는 URL에서 이미지를 받아와 파일의 형태로 다루면서 뷰에서 이미지를 보여주고자 하여, 아래의 작업을 처리해주고 있었다.파이어베이스에서 이미지의 URL을 받아옴URL에서 이미지를 다운받아, 로컬에 임시 파일로 저장File 타입의 변수에 해당 파일을 불러오기Image 위젯에 이미지 파일을 보여주기ㅤ그리고, URL에서 이미지를 다운받아 저장하는 코드는 아래의 코드를 사용해주었다.Future downloadImageToFile(String imageUrl) async { try { // HTTP GET 요청을 통해 이미지 데이터 다운로드 final response = await http.get(Uri.parse(imageUrl)); if (response.statusCo..
ㅤ이번에 개발을 진행하면서 Sign In With Apple 기능을 붙이려고 했다. 그런데, 정말 예상치 못하는 상황에 Exception이 계속 발생했다. ㅜㅜㅜ 원인을 찾지 못해서 이걸로 2일 이상은 날린 것 같다.ㅤ간단하게 결론만 말하자면, iOS Configuration을 새로 만들자.ㅤFirebase에서 Sign in With Apple을 적용하려고 했으며, Flutter로 개발을 해주고 있었다.우선 설정은 다음 사항들을 진행했다. 다른 블로그 글들, 유튜브 튜토리얼에서 잘 설명되어있었다.FirebaseSign in with Apple 추가하기Apple DeveloperApp Identifier 등록Sign in with Apple 체크Service Identifier 등록Sign in with ..
이번에는 아래와 같은 UI를 만들어보고 싶었다. 내가 선택한 텍스트필드에 포커스가 가고, 다음 버튼을 누르면 새로운 필드가 열리며 여기로 포커스가 이동하는 방식을 구현하고 싶었다.ㅤㅤ내가 만들고자한 서비스에서는 텍스트필드의 개수가 정해져있었기에, step 으로 나눠 Visibility 위젯으로 이를 숨겨놨었다. 기타 부수적인 코드를 다 제거하면 아래처럼 작성이 되었다.ㅤList focuseNodeList = [FocusNode(), FocusNode(), FocusNode()];...Visibility( visible: 첫 번째 step 부터, child: Column( children: [ Visibility( visible: viewmodel.focusedStep == ..
이번에도 30분동안 싸운 간단한 문제가 있었다. 이번에 내가 구현하려 했던 부분은 데이터 삭제 후 뷰 새로고침이였다. 되게 간단한 문제였는데, 요녀석이랑 싸우게 된 이유는 자식 위젯에서 데이터를 지우는 로직을 호출하고, 부모 위젯에서 뷰를 업데이트를 해야한다는 점이였다.ㅤㅤ처음에는 단순하게 자식 위젯에 있는 버튼을 누르면 로직을 처리하고, 이에 따라 setState를 호출해 뷰를 업데이트해주려고 했다. 그런데, 분명 setState 함수까지 호출이 잘 되었다고 나오는데 뷰는 제대로 업데이트가 되지 않는 문제가 있었다.// 자식 위젯 코드onPressed() async { await removeLogic() .whenComplete(() { setState(() {}); });}ㅤ여기에서 갖가지 위치에 ..
이번에는 닉네임 검색 기능이 필요해, 아래같은 검색 기능을 구현하고자 했다.ㅤ그런데, 처음에 생각했던 것보다 조금 막막했다…! 😭😭😭😭ㅤ기능 구현에 들어가기 전에는 파이어베이스에 날릴 쿼리를 단순하게 아래처럼 생각했다.“User 컬렉션의 문서들에 대해 문서 내 name 필드에 해당 문자열을 포함하고 있는 문서를 요청해야지”ㅤ그러나, Firebase에 조건을 설정하는 where 함수에는 해당 방식이 포함되어있지 않았다. 기껏 비슷한건 arrayContains 같은거였는데, 이는 객체나 값이 array 타입 필드에 포함되어있는지를 확인하는 조건문이다. 아마 요거를 보고 문자열 패턴 쿼리가 있다고 생각했던 것 같다.ㅤㅤㅤ이걸 처리할 수 있는 쿼리를 지원하지 않는다면, 정녕 모든 사용자 데이터를 다 긁어..
오늘도 로직과 싸우다가 거의 질 뻔 했다. forEach 가 날 살렸ㄷr…ㅤ이번에 겪은 문제 상황은 [ 원본 배열을 순회하면서 각 원소의 값에 대해 연산 수행 → 다른 배열에 값을 업데이트 하는 코드 ]를 map으로 처리해주려 하는 상황이였다. 분명 배열에 값이 들어있는데 map 내부 함수가 실행이 되지 않고, 심지어 print 문도 찍히지 않는 매우매우 기묘한 현상이였다. 그런데 map으로 실행이 안되던게 forEach로 넣어버리니 바로 실행이 되어버리는게 아닌가??🤔🤔🤔🤔🤔🤔🤔🤔🤔🤔🤔🤔ㅤ결론부터 짧게 지르고 시작하자면, forEach는 순회를 하는 함수이고, map은 Iterator를 반환하는 함수이다.forEach는 Eager Evaluation을 수행하는 함수이고, map은 ..
기존에 FutureBuilder를 사용해서 파이어베이스에서 불러오는 데이터에 대해 비동기적인 UI를 만들어본 적이 있었다. 근데, 지금 생각해보면 너무 대충 만들고, FutureBuilder가 하는 역할이 뭔지만 찍먹하고 넘어가버렸던 것 같다.ㅤ그때는 요렇게 데이터가 들어오는 중일 때에는 왼쪽처럼 표시하고, 데이터가 들어오고 나면 오른쪽처럼 정상적으로 숫자가 보여지도록 만들었었다. ㅤ요즘에 앱개발이 재미있기도 하고, 여러가지 UX를 고려한 앱을 만들어내고싶다는 욕심이 생기고 있어서 비동기 UI 부분도 조금씩 건드려보려고 하고 있다. 바로 위에 만든 것도 어떻게 보면 비동기를 건드린 것이기는 하지만, 좀 더 미적인 느낌이 필요하지 않나 라고 생각된다. ㅋㅋㅋㅤ현재 내가 진행하고 있는 프로젝트에서는 비동기로..
TCA에 대한 공부를 시작하기 전에 MVVM에 대해 살펴보다가 아래의 아티클을 발견했다.https://medium.com/@esung/mvc-정말제대로알고계신가요-875f1323f6c0 MVC, 정말제대로알고계신가요?저는 꽤 최근까지 MVC라고 하면 모든 개발자가 같은 개념을 떠올린다고 생각했습니다. 애시당초 디자인패턴이나 아키텍처를 배우는 이유가 다른 개발자, 특히 다른 도메인의 개발자들과의 의사medium.com내가 알고있던 애플에서 사용하는 MVC는 사실은 전형적인 MVC와는 다른 구조라는 내용이였다. 또잉…? 이게 무슨 소리야?? 라고 생각하면서 글을 좀 살펴봤는데, 맞는 말을 던지고 있는 것 같았다.ㅤ그래서 요 충격을 받은 기회에, MVC를 간략하게 짚고 넘어가려고 찾아봤고, 이를 간단히 여기에..
이번에 TCA를 공부하려고 자료를 열심히 보고 있었는데, 아카데미 멘토였던 young의 반가운 글이 보였다!https://gist.github.com/unnnyong/439555659aa04bbbf78b2fcae9de7661 swiftui_mvvm.mdGitHub Gist: instantly share code, notes, and snippets.gist.github.com SwiftUI와 MVVM의 궁합이 썩 좋지만은 않다는 일본 글을 영이 번역을 해둔 글이였는데, 요 번역글이 꽤나 임팩트가 있었는지, 여러 블로그에서 위 아티클을 인용해서 요약해두거나, 저마다의 생각을 덧붙여둔 것을 볼 수 있었다. 이때까지 Presentation 계층의 아키텍처에 대해서 나도 특별한 생각없이 왼손에는 MVC, 오른손..
iOS 취업 공고의 자격요건과 우대요건들을 간략하게 정리해봤다! 다른 취준생들의 시간을 아껴주는 포스트가 되기를 바란다 :) 올해 안에 졸업을 하기 위해서는 나는 올해 하반기에 인턴을 진행해야 한다 ㅜㅜ 막상 iOS 인턴을 지원해보려고 하니, 나에게 프로젝트에 대한 경험은 몇 개 있지만 기술력에 있어서는 경쟁력이 있다고 생각이 들지 않았다. 기획이나 디자인 과정에 참여하고 협업을 할 줄은 알지만, 막상 비동기를 활용한 개발을 능숙하게 처리한다거나 Restful api를 활용한 개발을 진행하지는 않았기에 취준에 어려움이 있을 것 같다는 생각이 들었다. iOS 분야는 인턴이나 신입 포지션도 잘 없는데, 몇 없는 좋은 기회들을 날려버리기는 너무 아쉽다는 생각에 남은 기간동안 내가 준비할 수 있는 부분들을 최대..