내일배움캠프 앱개발 iOS 트랙 본캠프 2주차
Today I Learned
# 오늘 한 것?
스토리보드로 계산기 틀을 만들었다. UIButton과 UILabel을 사용했다.
생긴 것은 나름 iOS 수업이니까.. 아이폰 계산기를 보고 비슷하게 해봤다.
아직 구현하기 힘들 것 같은 버튼은 제외시켰다.
# UIButton의 sender란 무엇일까?
액션 핸들러를 담당하는 객체!
라고 공식 문서 에는 적혀 있는데.. 말을 참 어렵게 하는 것 같다.
그냥 버튼 그 자체라고 보면 될 것 같다.
sender 하위에 currentTitle 이라는 속성이 있는데 이걸 이용하면 버튼의 글자를 받아올 수 있다.
하마터면 숫자버튼 10개랑 기능버튼 6개(혹은 그 이상)을 일일히 IBOutlet으로 연결해서 가져올 뻔 했다.
숫자는 숫자끼리 입력을 위해서 하나로 사용하고
연산자는 계산을 위해 따로 버튼을 만들어서 사용했다.
sender.currentTitle 값을 사용하지 않는 초기화 버튼 C는 아예 분할해서 새로 만들었다.
# 사칙연산 만들기
계산기 과제 레벨 1인 사칙연산을 구현했다. 일단 굴러가긴 한다...
과제 구현 조건 레벨 1 내용
> 더하기, 빼기, 나누기, 곱하기 연산을 수행할 수 있는 Calculator 클래스를 만들고, 클래스를 이용하여 연산을 진행하고 출력하기
아쉽게도 지금 당장은 코드에 좀 큰 하자가 있어서... 핵심적인 부분만 공유해 보겠다!!!
class Calculator {
func calculate(resultNumber: Double, inputNumber: Double, operatorType: String) -> Double {
var returnvalue: Double = 0
switch operatorType {
case "0": returnvalue = Double(resultNumber)
case "+": returnvalue = Double(resultNumber + inputNumber)
case "-": returnvalue = Double(resultNumber - inputNumber)
case "x": returnvalue = Double(resultNumber * inputNumber)
case "÷": returnvalue = Double(resultNumber / inputNumber)
default: break
}
return returnvalue
}
func checkResult(value: Double) -> Bool {
return value.truncatingRemainder(dividingBy: 1.0) == 0 ? true : false
}
}
계산을 위한 클래스 Calculator이다.
- 실질적인 사칙연산을 위한 함수 calculate
- Double로 반환되는 결과값의 소수점 아래가 0이라면 정수로 변환해주기 위한 함수 checkResult
를 만들었다.
calculate 함수의 경우, 3가지 매개변수를 받아오는데 그 중 operatorType이라는 매개변수를 사용해서 switch 문을 작성했다.
아마 내일 보면 이거 아니라고 다시 갈아엎고 있을 것 같지만...
# 내일 할 것
내일은 일반적인 계산기처럼, 두가지 숫자로만 구현하는 게 아니라 여러가지 숫자를 동시에 입력받고 계산할 수 있도록 만들어야겠다.
그리고 계산을 하는 부분을 다시 고치고 싶다.
'TIL' 카테고리의 다른 글
[TIL] 2023.11.30 | 계산기(3/n) 클래스 단일책임원칙, OCP (0) | 2023.11.30 |
---|---|
[TIL] 2023.11.29 | 계산기(2/n) 숫자 2개 이상을 계산할 수 있는 사칙연산 구현하기 (1) | 2023.11.29 |
[TIL] 2023.11.27 | 깃허브 온갖 에러를 보다 (0) | 2023.11.27 |
[TIL] 2023.11.24 | 프로그래머스 제일 작은 수 제거하기 (0) | 2023.11.24 |
[TIL] 2023.11.23 | 고차함수 filter(_:) (0) | 2023.11.23 |