Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 직장인인강
- userDefaults
- 프로퍼티 관찰자
- 독학
- enum
- TableView
- switch
- SeSAC
- 패캠챌린지
- Threading
- Git
- swift
- 열거형
- Background
- 옵셔널 체이닝
- Realm
- cancelAsyncWrite
- 기본문법
- xcode
- beginAsyncWrite
- 패스트캠퍼스후기
- ios
- 직장인자기계발
- 30개프로젝트로배우는iOS앱개발withSwift초격자패키지Online
- 패스트캠퍼스
- Optional Chaining
- RawValue
- 문자열 보간법
- 함수
- 인스펙터
Archives
- Today
- Total
아삭아삭 iOS 개발
[코드리뷰] 2022.07.13 (2) 본문
SeSAC 멘토님에게 피드백 받은 사항들을 잊지 않기위해 정리합니다!
아래 내용들 외에도 추가 개선할 사항이 있다면 댓글로 알려주세요~ :)
1. Bool 값에 따른 조건문의 경우 줄일 수 있음 (방안1 - 삼항연산자, 방안2 - toggle)
2. == true 를 생략할 수 있을 경우 생략가능
3. 배열안에 이미지들이 다수 들어가는 방법은 추천하지 않음
LED 보드 app
1. Bool 값에 따른 조건문의 경우 줄일 수 있음 (방안1 - 삼항연산자, 방안2 - toggle)
- 아래 조건문에서 searchView.isHidden 값에 따라 true ↔ false로 바꿔주고자 했다.
→ 심지어 주석에는 toggle로직이라고 적어두고 친숙한 if문으로 코딩하다니 허ㅏ허 다음부턴 비슷한 경우에 toggle잘 기억하고 쓰자~!
2. == true 를 생략할 수 있을 경우 생략가능
- 이건 조금 창피한 수정사항이긴 했지만, 앞으로는 주의할 내용이다.
if구문내 조건문란에 searchView.isHidden 자체로 Bool값 판단이 가능하기 때문에 뒤에 '== true'는 생략 가능하다!
<AS-IS>
@IBAction func tapGestureClicked(_ sender: UITapGestureRecognizer) {
view.endEditing(true)
// view의 숨김여부에 따른 view 표기여부 toggle 로직
if (searchView.isHidden == true) {
searchView.isHidden = false
} else {
searchView.isHidden = true
}
}
<TO-BE>
// 방안1. 삼항연산자를 사용
searchView.isHidden ? (searchView.isHidden = false) : (searchView.isHidden = true)
// 방안2. toggle을 사용
searchView.isHidden.toggle()
(전체코드 보러가기 : https://github.com/minhye9731/LEDBoard)
감정 다이어리 app
3. 배열안에 이미지들이 다수 들어가는 방법은 추천하지 않음
- 감정다이어리에서 클릭할 감정들 정보(이미지, 감정문구)를 배열(emotionDataArray)에 한번에 담아두고서 필요한 경우에 꺼내서 쓰고 싶었다.
→ 배열에 이미지가 다수 들어가는 것은 무거울 수 있으므로 이번 과제에서 주어진 Asset 활용시에는 차라리
1) 데이터배열에 감정문구들만 String 타입으로 배열로 담고
2) 이미지들 이름이 다 'sesac_slime1.png', 'sesac_slime2.png, 'sesac_slime3.png''이런 양식인 점 참고해서 수정해보는 것 추천하신다고 했다.
<AS-IS>
var emotionDataArray: [Emotion] = [
Emotion(emotionalSlime: UIImage(named: "sesac_slime1.png")!, emotions: "행복해"),
Emotion(emotionalSlime: UIImage(named: "sesac_slime2.png")!, emotions: "사랑해"),
Emotion(emotionalSlime: UIImage(named: "sesac_slime3.png")!, emotions: "좋아해"),
Emotion(emotionalSlime: UIImage(named: "sesac_slime4.png")!, emotions: "분노해"),
Emotion(emotionalSlime: UIImage(named: "sesac_slime5.png")!, emotions: "심심해"),
Emotion(emotionalSlime: UIImage(named: "sesac_slime6.png")!, emotions: "지루해"),
Emotion(emotionalSlime: UIImage(named: "sesac_slime7.png")!, emotions: "당황해"),
Emotion(emotionalSlime: UIImage(named: "sesac_slime8.png")!, emotions: "서운해"),
Emotion(emotionalSlime: UIImage(named: "sesac_slime9.png")!, emotions: "슬퍼해")
]
// 생략
override func viewDidLoad() {
super.viewDidLoad()
for i in 0...8 {
slimeImages[i].setImage(emotionDataArray[i].emotionalSlime, for: .normal)
emotionLabels[i].text = #"\#(emotionDataArray[i].emotions) "0""#
}
}
<TO-BE>
// 우선 별도 생성했던 아래 데이터 구조 삭제
struct Emotion {
var emotionalSlime: UIImage
let emotions: String
}
// 이미지가 들어갔던 데이터 배열에서 이미지는 삭제하고 텍스트만 남김
var emotionDataArray: [String] = ["행복해", "사랑해", "좋아해", "분노해", "심심해", "지루해", "당황해", "서운해", "슬퍼해"]
// for문의 바구니객체 표현식 수정
// 감정텍스트 끌어오는 문자보간법 수정
// 감정이미지는 이미지명의 숫자를 활용하여 적용
override func viewDidLoad() {
super.viewDidLoad()
for i in 0...(emotionArray.count - 1) {
let image = UIImage(named: "sesac_slime\(i + 1).png")
slimeImages[i].setImage(image!, for: .normal
emotionLabels[i].text = #"\#(emotionDataArray[i]) "0""#
}
}
(전체코드 보러가기 : https://github.com/minhye9731/EmotionalDiaryProject)