new
-
UserDefaults 값 하나로 앱 진입시 1회만 검사하는 로직 관리하기
앱을 서비스하다보면 버그개선 또는 업데이트 안내 등의 이유로 단 1회만 동작하는 코드가 필요할 때가 있습니다. 예를 들어, TiTi에서는 비어있는 기록 객체인 Daily가 사라지지 않아서 Log화면에 기록이 있는 것 처럼 보이는 버그가 있었는데요,보다시피 기록이 비어 있는데도 날짜 아래에 점이 찍혀 있습니다 (기록이 있는 경우에만 점이 찍혀 있어야함) 이를 해결하기 위해서는 두 가지 동작이 필요 했습니다. 1. 사용자가 기록을 편집해서 그 날의 기록을 모두 지우는 경우 Daily객체를 삭제한다.2. 버그 개선 전에 존재했던 비어있는 Daily객체를 모두 삭제한다. 여기서 2번은 사용자가 앱을 진입할 때 1회만 작업하면 되는 내용입니다.여러번 동작해도 문제는 없겠지만, 비어 있는 Daily객체를 찾기 ..
-
modalPresentationStyle 설정 시점(feat.ViewLifeCycle)
사이드 프로젝트에서 투명한 ViewController를 띄울 일이 생겼는데, `modalPresentationStyle = .overFullScreen` 을 viewDidLoad() 시점에 작성했더니 다음과 같은 문제가 있었다. viewDidLoad()는 present() 이후에 호출되어 View를 메모리에 로드하는데,아마 present()하는 당시에 새로운VC가 가진 modalStyle을 적용하는 듯 하다.present 에니메이션 적용하려면 그래야 할 것 같다.. 그래서 present하기 전에 modalStyle을 변경해주어야 하는데, 보통은 present하는 VC에서 설정해주지만,외부에서 해당 ViewController를 컨트롤하지 않도록 하기 위해 init()시점에 modalStyle을 적용..
-
네이버 부스트 캠프 8기 챌린지 (feat. 중도하차)
네이버 부스트 캠프 챌린지 과정은 짧은 시간동안 CS+관련직무에 대한 언어 지식을 빠르게 키울 수 있는 과정입니다 더불어 개발할 때 꼭 필요한 도구나 지식에 대해서도 학습할 수 있습니다! 과정 과정은 일주일 단위로 진행된다. 매 주 팀원이 새롭게 구성되는데, 같은 포지션(iOS) 4~5명과 함께 한 주 동안 팀이 되어 활동한다 활동 내용은 매일 바뀌는 미션을 해결하고, 다음날 오전에 팀원들과 리뷰+회고를 하는 방식 이 시간을 의미있게 쓰고 싶어서 팀원들에게 코드리뷰를 코멘트로 달아주자고 했었다! 덕분에 코드리뷰하는 방법과 다른사람의 코드를 분석하는데 도움이 많이 되었던것 같다 👍 네부캠에는 직무에 능숙한 사람보다 해당 직무를 처음 접하는 사람이 꽤 많았다 그래서 Swift언어를 처음 사용해보는 팀원들도 ..
-
네이버 부스트 캠프 8기 합격후기
네이버부스트캠프(네부캠)은 네이버 커넥트 재단에서 주관하는 프로그램이에요! 대외활동 중에서는 퀄리티가 꽤 높다고 생각해 취준하면서 도전해보았습니다 과정은 서류합격 이후에 두 번의 코테가 있습니다 서류 주변에 지난 네부캠에 합격했던 사람들이 많아서 도움을 많이 받았어요! 네이버가 자소서를 굉장히 중요하게 생각하는것 같습니다 공개채용 때도 그렇고 자기자신에 대해 고민해볼 수 있는 질문이 많았어요 ❓ 왜 개발자가 되고 싶나요? 소프트웨어 개발을 더 잘하고 싶어서 시도했던 경험 “해야 하는데”에서 끝나지 않고 실천했거나, ~ 자기주도적으로 사고하고 행동한 경험 열린 사고로 동료와 협력한 경험 개인적으로 이런 질문을 좋아하는데, 개발자로서 나를 다시 돌아보고 고민해볼 수 있어서 좋은것 같습니다! 네부캠은 협업&몰..
-
[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
-
네이버 부스트 캠프 8기 챌린지 (feat. 중도하차)
네이버 부스트 캠프 챌린지 과정은 짧은 시간동안 CS+관련직무에 대한 언어 지식을 빠르게 키울 수 있는 과정입니다 더불어 개발할 때 꼭 필요한 도구나 지식에 대해서도 학습할 수 있습니다! 과정 과정은 일주일 단위로 진행된다. 매 주 팀원이 새롭게 구성되는데, 같은 포지션(iOS) 4~5명과 함께 한 주 동안 팀이 되어 활동한다 활동 내용은 매일 바뀌는 미션을 해결하고, 다음날 오전에 팀원들과 리뷰+회고를 하는 방식 이 시간을 의미있게 쓰고 싶어서 팀원들에게 코드리뷰를 코멘트로 달아주자고 했었다! 덕분에 코드리뷰하는 방법과 다른사람의 코드를 분석하는데 도움이 많이 되었던것 같다 👍 네부캠에는 직무에 능숙한 사람보다 해당 직무를 처음 접하는 사람이 꽤 많았다 그래서 Swift언어를 처음 사용해보는 팀원들도 ..
-
[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으로 아이폰 사진첩에 있는 사진 ..
-
[SwiftUI] TabView 페이지 이동시 TabBar , NavigationBar Hidden 처리하기
일주일 삽질하고 작성하는 트러블슈팅 .. 우선 나는 TabView안에 NavigationView를 담아 페이지 이동을 하고 싶었다. FirstView -> SecondView struct ContentView: View { var body: some View { TabView { NavigationView { FirstView() } .tabItem { Text("first") } } } } struct FirstView: View { var body: some View { ZStack{ Color.yellow VStack{ Text("FirstView") NavigationLink { SecondView() } label: { Text("Go SecondView") } } } } } struct Sec..
-
sw마에스트로 13기 합격후기 (자소서,코테,면접)
합격후 한참 바쁠때 쓰는 합격후기&회고 사실 큰 기대 없이 시작했다. 작년에 굉장히 열심히 준비했음에도 불합의 아픔을 겪었기 때문에,, ㅎㅎ 올해는 고민하다가 나답지 않게 하루전에 자소서를 썼다 작년에 잘 써놔서 부분 수정만해서 그대로냈다 서류는 제출만하면 합격한다고 보시면됩니다 ! 모의 테스트 시험 몇일 전에 모의테스트 환경을 준다. 소마의 자랑스런 결과물인 [앨리스] 플랫폼으로 진행했다. 모의 테스트는 알고리즘 1 SQL 1 WEB 1 문항 씩 주어졌다. 모의 테스트의 난이도를 보고 코딩테스트의 난이도를 가늠하지는 말자..! 아 참고로 모든 코테는 검색금지, 원격 감독이 진행되었다!! 1차 코딩 테스트 총 8문제로 알고리즘 6 SQL 1 WEB 1 문항 씩 주어졌다. 정확히 기억은 안나는데, 알고리즘..