arr = ["4", "-", "3", "*", "5", "/", "7"] 1. arr 에 담긴 배열을 하나씩 추출한다. 2. 추출한 값들에서 *가 있는지 찾는다. 없으면 패스... 3. 찾은 *가 있으면 * 기준 왼쪽, 오른쪽을 찾아 곱하기 연산을 해준다. 4. 연산해주고 나온 결과값을 *가 있던 자리에 넣는다. ["4", "-", "3", "15", "5", "/", "7"] 5. 왼쪽 오른 쪽 값을 지운다. ["4", "-", "15", "/", "7"] 6. 이 arr를 저장한다. 다시 위 작업을 반복하고, 2번에서 없으면 다시 나누기로 넘어간다. 1. arr 에 담긴 배열을 하나씩 추출한다. 2. 추출한 값들에서 /가 없는지 찾는다. 없으면 패스... 3. 찾은 /가 있으면 * 기준 왼쪽, 오른..
얼마 전 계산기 앱을 만들면서 우선 순위가 있는 계산을 해주기 위해 열거형을 사용하여 더하기, 뺄셈, 곱셈, 나누기를 지정해줬다. enum CalculationOperator: String { case plus = "+" case minus = "-" case multiply = "x" case divide = "÷" } 그러고 사용자가 입력한 연산자를 enum을 사용해서 저장하려고 switch .. case 문에서 해당 operator을 쓰는데 에러가 났다..ㅎㅎ switch self { } 이런 식으로 사용했는데 맨 처음에는 enum 구문안에 없어서 self를 못 찾나보다 -> enum 안에 넣어봐야지 하면서 끼워맞추기식 에러 해결을 시도했는데... 계속 찾을 수 없다는 내용의 에러가 났다. swit..
조원들과 레파지토리에 자신의 이름을 딴 브랜치를 생성해서 프로젝트를 push 한 후에 정말 실무처럼 풀리 퀘스트를 날려보고 머지라는 것을 경험해보려고 하던 과정에서 이슈가 생겼다. 다른 조원들은 pull request도 날려보고, 머지도 했는데 나만 아무것도 비교할 게 없다는 저 영어 메세지가 나만 떴다. 그래서 알아보니 실수로 main에 먼저 commit 후, push해서 올린 팀원이 있었고, 그 main 브랜치를 토대로 나를 제외한 나머지 조원들은 git clone으로 이어받았기 때문에 하나의 base branch에서 올릴 수 있었다. 하지만 나는 혼자 터미널에서 git init을 하고 브랜치를 파서 올렸기 때문에 아예 base branch가 달랐고, 비교할 대상이 없다는 것이다. 그래서 저 이슈를 ..
나의 목표 1. 알고리즘 문제 - 하루에 한 문제 이상 풀기 2. 앱 런칭 - 11월까지 앱 런칭 1개 해보기 목표를 이루기 위해 한 일 어떤 언어로 런칭을 할 지 고민했고, 그를 위해 SwiftUI를 공부하고 있다. 잘한 점 정말 열심히 매일 복습하면서 SwiftUI와 친해지려고 노력했다. 아쉬운 점 SwiftUI를 공부하면서 간단한 기능 구현을 하고 있는데 에러 해결 과정을 자세히는 기록 못한 점이 아쉽다. 또 알고리즘 같은 경우 시간 분배를 하지 못해서 공부를 거의 못했다. 나의 목표 재조정하기 알고리즘 문제 - 하루에 한 문제 이상 풀기 앱 런칭 - 11월까지 앱 런칭 1개 해보기 위 2가지를 하기 위해 요일 별로 나눠보면 어떨까? 월, 화, 수 - SwiftUI 공부하기 목, 금 - 알고리즘 문..
같이 공부하고 있는 조원들과 협업 및 깃헙 연습을 해보고자 개인 레파지토리가 아닌 Organization의 레파지토리에 브랜치를 따서 push 해보기로 했다. 개인 레파지토리에 올렸을 때는 문제없이 push가 되었지만 팀 Organization에서는 id와 password 인증 오류(실패)가 발생했다. git failed with a fatal error. authentication failed for 맨 처음에는 organization을 만든 조원이 우리에게 member로밖에 권한을 주지 않아 인증 에러가 발생하는 듯 했다. 아니면 구글링을 통해 레파지토리가 private이라 그럴 가능성이 있다는 글을 봐서 public으로 바꿔보기도 했지만 인증 에러는 나의 이슈이기 때문에 다시 내 정보가 잘 입력되어..
StoryBoard로 간단한 계산기 앱을 구현하다가 발견한 에러. class ViewController: UIViewController { @IBOutlet weak var firstNumberTextField: UITextField! @IBOutlet weak var secondTextField: UITextField! @IBOutlet weak var resultLabel: UILabel! override func viewDidLoad() { super.viewDidLoad() } // UITextField는 옵셔널형 변수이기 때문에 값이 없을 경우 "" 공백을 넣어주려고 한다. let firstNumString = firstNumberTextField.text ?? "" @IBAction func ..
나의 목표 1. 알고리즘 문제 - 손코딩으로 매일 2개씩 풀기 2. 앱 런칭 - 5개월 안에 앱 런칭 2개 해보기 목표를 이루기 위해 한 일 swift를 공부하고 남은 시간에 프로그래머스 레벨 1단계를 손코딩하면서 풀었다. 잘한 점 하루에 한 문제도 풀지 못했어도 열심히 문제 해결을 위해 오래 고민했던 것 아쉬운 점 1번 알고리즘 문제의 경우, 한 문제를 하루 이상 붙잡고 푸는 경우가 있어서 조금 조정이 필요할 것 같다. 그리고 다른 공부를 하게 될 경우에 체력적으로 지쳐서 풀지 못한 날들이 있어서 아쉽다. 2번의 앱 런칭의 경우, 너무 기간이 길어서 미루기만 하는 것 같아서 더 타이트하게 일정 조정을 하고 그에 맞춰 구체적인 목표를 세워야겠다. 나의 목표 재조정하기 알고리즘 문제 - 하루에 한 문제 이..
Search 탭에서 검색을 하여 Result Search VC → DetailPost VC → Compose VC 로 메모를 작성하고 완료를 누르면 My VC로 이동해서 내가 작성한 메모를 바로 확인할 수 있게끔 로직을 짰다. Unbalanced calls to begin/end appearance transitions for ... 그러다가 Search 탭을 눌렀는데 위와 같은 에러가 떴다. 런타임 에러는 아니라 어떤 에러인 지 조금 더 살펴봤는데 Compose VC에서 작성 완료를 누르면 pop시키고 DetailPost VC에 머무르게 했었는데, 차라리 유저들이 보기에도 편하게끔 작성 완료를 누르면 아예 PopToRoot를 해주면 나중에 My VC에서 내가 작성한 메모를 보고 Search탭을 탭하면 ..