new

  • UserDefaults 값 하나로 앱 진입시 1회만 검사하는 로직 관리하기

    UserDefaults 값 하나로 앱 진입시 1회만 검사하는 로직 관리하기

    앱을 서비스하다보면 버그개선 또는 업데이트 안내 등의 이유로 단 1회만 동작하는 코드가 필요할 때가 있습니다. 예를 들어, TiTi에서는 비어있는 기록 객체인 Daily가 사라지지 않아서 Log화면에 기록이 있는 것 처럼 보이는 버그가 있었는데요,보다시피 기록이 비어 있는데도 날짜 아래에 점이 찍혀 있습니다 (기록이 있는 경우에만 점이 찍혀 있어야함)  이를 해결하기 위해서는 두 가지 동작이 필요 했습니다.  1. 사용자가 기록을 편집해서 그 날의 기록을 모두 지우는 경우 Daily객체를 삭제한다.2. 버그 개선 전에 존재했던 비어있는 Daily객체를 모두 삭제한다. 여기서 2번은 사용자가 앱을 진입할 때 1회만 작업하면 되는 내용입니다.여러번 동작해도 문제는 없겠지만, 비어 있는 Daily객체를 찾기 ..

  • modalPresentationStyle 설정 시점(feat.ViewLifeCycle)

    modalPresentationStyle 설정 시점(feat.ViewLifeCycle)

    사이드 프로젝트에서 투명한 ViewController를 띄울 일이 생겼는데, `modalPresentationStyle = .overFullScreen` 을 viewDidLoad() 시점에 작성했더니 다음과 같은 문제가 있었다.    viewDidLoad()는 present() 이후에 호출되어 View를 메모리에 로드하는데,아마 present()하는 당시에 새로운VC가 가진 modalStyle을 적용하는 듯 하다.present 에니메이션 적용하려면 그래야 할 것 같다..  그래서 present하기 전에 modalStyle을 변경해주어야 하는데, 보통은 present하는 VC에서 설정해주지만,외부에서 해당 ViewController를 컨트롤하지 않도록 하기 위해 init()시점에 modalStyle을 적용..

  • 네이버 부스트 캠프 8기 챌린지 (feat. 중도하차)

    네이버 부스트 캠프 8기 챌린지 (feat. 중도하차)

    네이버 부스트 캠프 챌린지 과정은 짧은 시간동안 CS+관련직무에 대한 언어 지식을 빠르게 키울 수 있는 과정입니다 더불어 개발할 때 꼭 필요한 도구나 지식에 대해서도 학습할 수 있습니다! 과정 과정은 일주일 단위로 진행된다. 매 주 팀원이 새롭게 구성되는데, 같은 포지션(iOS) 4~5명과 함께 한 주 동안 팀이 되어 활동한다 활동 내용은 매일 바뀌는 미션을 해결하고, 다음날 오전에 팀원들과 리뷰+회고를 하는 방식 이 시간을 의미있게 쓰고 싶어서 팀원들에게 코드리뷰를 코멘트로 달아주자고 했었다! 덕분에 코드리뷰하는 방법과 다른사람의 코드를 분석하는데 도움이 많이 되었던것 같다 👍 네부캠에는 직무에 능숙한 사람보다 해당 직무를 처음 접하는 사람이 꽤 많았다 그래서 Swift언어를 처음 사용해보는 팀원들도 ..

  • 네이버 부스트 캠프 8기 합격후기

    네이버 부스트 캠프 8기 합격후기

    네이버부스트캠프(네부캠)은 네이버 커넥트 재단에서 주관하는 프로그램이에요! 대외활동 중에서는 퀄리티가 꽤 높다고 생각해 취준하면서 도전해보았습니다 과정은 서류합격 이후에 두 번의 코테가 있습니다 서류 주변에 지난 네부캠에 합격했던 사람들이 많아서 도움을 많이 받았어요! 네이버가 자소서를 굉장히 중요하게 생각하는것 같습니다 공개채용 때도 그렇고 자기자신에 대해 고민해볼 수 있는 질문이 많았어요 ❓ 왜 개발자가 되고 싶나요? 소프트웨어 개발을 더 잘하고 싶어서 시도했던 경험 “해야 하는데”에서 끝나지 않고 실천했거나, ~ 자기주도적으로 사고하고 행동한 경험 열린 사고로 동료와 협력한 경험 개인적으로 이런 질문을 좋아하는데, 개발자로서 나를 다시 돌아보고 고민해볼 수 있어서 좋은것 같습니다! 네부캠은 협업&몰..

  • [UIKit] TableView Multiple Cell, multi type json data parsing

    [UIKit] TableView Multiple Cell, multi type json data parsing

    TableView는 하나의 Cell이 아닌 다양한 Cell을 가질 수 있습니다.종종 앱을 보다보면 tableview 중간중간 광고가 나온다거나, 나를 위한 추천을 한다거나 ...대부분의 앱 서비스가 tableview를 사용하고, multiple cell을 사용합니다.그래서 저도 multiple cell을 사용하여 다음과 같은 앱을 만들어 볼것입니다! 데이터 가져오기먼저 멀티타입 데이터를 어떻게 가져올 것인지에 대해 고민해야합니다.(JSON에 대한 내용은 접은글에 있습니다)더보기let JSONData ="""{ "data" : [ { "type" : "TITLE_ONLY", "title" : "Struct vs Class" }, ..

hot

  • sw마에스트로 13기 활동후기 (멘토링, 팀프로젝트)

    sw마에스트로 13기 활동후기 (멘토링, 팀프로젝트)

    https://990427.tistory.com/84 sw마에스트로 13기 합격후기 (자소서,코테,면접) 합격후 한참 바쁠때 쓰는 합격후기&회고 사실 큰 기대 없이 시작했다. 작년에 굉장히 열심히 준비했음에도 불합의 아픔을 겪었기 때문에,, ㅎㅎ 올해는 고민하다가 나답지 않게 하루전에 자소서 990427.tistory.com 회고와 회상에 가까울 13기 활동후기 글을 써보려고 한다. 요약 소마를 했던 2022년을 한단어로 요약하자면 ✨완벽✨ 이다 소마에서 했던 공부들과 만났던 사람들 모두 너무 감사했던 완벽한 1년이였다..! 누가 나한테 다시 돌아가도 소마 하겠냐고 물어본다면 0.1초의 망설임도 없이 YES다. 예비과정 소마 사무국에서 대부분의 활동 과정들을 노션에 정리해주셨다 예비과정은 아무것도 모르는..

  • 네이버 부스트 캠프 8기 챌린지 (feat. 중도하차)

    네이버 부스트 캠프 8기 챌린지 (feat. 중도하차)

    네이버 부스트 캠프 챌린지 과정은 짧은 시간동안 CS+관련직무에 대한 언어 지식을 빠르게 키울 수 있는 과정입니다 더불어 개발할 때 꼭 필요한 도구나 지식에 대해서도 학습할 수 있습니다! 과정 과정은 일주일 단위로 진행된다. 매 주 팀원이 새롭게 구성되는데, 같은 포지션(iOS) 4~5명과 함께 한 주 동안 팀이 되어 활동한다 활동 내용은 매일 바뀌는 미션을 해결하고, 다음날 오전에 팀원들과 리뷰+회고를 하는 방식 이 시간을 의미있게 쓰고 싶어서 팀원들에게 코드리뷰를 코멘트로 달아주자고 했었다! 덕분에 코드리뷰하는 방법과 다른사람의 코드를 분석하는데 도움이 많이 되었던것 같다 👍 네부캠에는 직무에 능숙한 사람보다 해당 직무를 처음 접하는 사람이 꽤 많았다 그래서 Swift언어를 처음 사용해보는 팀원들도 ..

  • sw마에스트로 13기 합격후기 (자소서,코테,면접)

    sw마에스트로 13기 합격후기 (자소서,코테,면접)

    합격후 한참 바쁠때 쓰는 합격후기&회고 사실 큰 기대 없이 시작했다. 작년에 굉장히 열심히 준비했음에도 불합의 아픔을 겪었기 때문에,, ㅎㅎ 올해는 고민하다가 나답지 않게 하루전에 자소서를 썼다 작년에 잘 써놔서 부분 수정만해서 그대로냈다 서류는 제출만하면 합격한다고 보시면됩니다 ! 모의 테스트 시험 몇일 전에 모의테스트 환경을 준다. 소마의 자랑스런 결과물인 [앨리스] 플랫폼으로 진행했다. 모의 테스트는 알고리즘 1 SQL 1 WEB 1 문항 씩 주어졌다. 모의 테스트의 난이도를 보고 코딩테스트의 난이도를 가늠하지는 말자..! 아 참고로 모든 코테는 검색금지, 원격 감독이 진행되었다!! 1차 코딩 테스트 총 8문제로 알고리즘 6 SQL 1 WEB 1 문항 씩 주어졌다. 정확히 기억은 안나는데, 알고리즘..

  • [Swift] 서버에 iOS 이미지 보낼 때 용량 이슈 & 해결

    [Swift] 서버에 iOS 이미지 보낼 때 용량 이슈 & 해결

    이미지 업로드 구현중에 생긴 이슈 form-data로 아이폰 사진첩에 있는 이미지를 서버로 보내려면 JPEG로 변환해야 합니다 아이폰에서 기본적으로 HEIF 확장자로 사진을 저장하는데, 이는 호환성이 떨어지기 때문입니다 어쨌든 우리는 PHPicker를 통해서 사진첩에 있는 사진을 가져올 수 있고, 이를 jpeg로 변환하기 위해 jpegData를 사용합니다 image.jpegData(compressionQuality: 1.0) 사실 뒤에 1.0은 기본값이라고 생각하고 아무 생각없이 썼는데 얘때매 이슈가 생길줄이야... Moya를 통해 API 통신을 하는데, 계속 이런 에러가 뜨는 것.. Failed to map data to a Decodable object. postman으로 아이폰 사진첩에 있는 사진 ..

  • [Swift] 클로저(Closure)의 모든것

    [Swift] 클로저(Closure)의 모든것

    본 게시물은 클로저의 기본 부터 심화까지 모두 다루고 있습니다. swift 함수의 기본을 다루었다고 가정하고 작성했습니다. Closure / 클로저 클로저란? 보통은 익명함수를 뜻한다. 하지만 named 함수도 클로저에 속한다는 사실 ! 클로저는 named Closure & unnamed Closure 두가지를 포함하고 있다. 우리가 알고 있는 일반적인 함수는 named Closure이다. func NameClosure() { print("I have a name") } 익명함수는 정확히는 unnamed Closure이지만, 보통 unnamed을 생략하고 그냥 클로저라고 부른다. 즉, 클로저 = 익명함수라고 통상적으로 생각하면 될듯 ? ( 클로저는 익명함수이지만, 1급 객체 함수의 특성을 가진다. ) 요..