TIL

22일차 TIL

h_luz 2024. 3. 27. 22:11
Swift 알고리즘 및 언어공부

 

47. 문자열 내 마음대로 정렬하기

 

 

계속 풀어보다가 너무 어려워서 결국 검색..

근데 정말 인상 깊었던 풀이가 있었다.

func solution(_ strings:[String], _ n:Int) -> [String] {
    return strings.sorted(by: {
    	if Array($0)[n] == Array($1)[n] {
        	return $0 < $1
    	} else {
       	 	return Array($0)[n] < Array($1)[n]
    	}
	})
}

sorted 함수 by: (정렬 방식)에 클로저 함수를 넣어서 정렬을 해주었다.

 

그리고 나는 n번째 글자 구하는 게 너무 어려웠는데 클로저 함수에서 Array($0)[n] 이렇게 해주면 구할 수 있다는 좋은 정보를 얻었다.

난 계속 Array 없이 $0[n] 이런 식으로 시도했었는데, 꿀팁이다.

 

48. K번째수

 

import Foundation

func solution(_ array:[Int], _ commands:[[Int]]) -> [Int] {
    var result: [Int] = []
    for i in 0..<commands.count {
        var arr: [Int] = []
        for j in (commands[i][0]-1)...(commands[i][1]-1){
            arr.append(array[j])
        }
        arr.sort()
        result.append(arr[commands[i][2]-1])
    }
    return result
}

 


 

TodoList 과제

 

취소선을 이어서 해보려고 한다.

 

Thread 1: "-[Assignment_3.ViewController completeTodo:]: unrecognized selector sent to instance 0x15ca05a00"

 

취소선 과제를 하다가.. 스위치를 켜니까 갑자기 오류가 떴다.. 왜지!?

하고 또 보니까 switch에 IBAction을 viewController에도 연결하고, myTableViewCell 파일에도 연결해서 오류가 났던 것...

난 왜 여기저기 다 연결해 놓는 걸까.. 언제 연결했는지도 기억에 없는데..

 

여하튼 ViewController에 있는 switch IBAction을 삭제해 주니까 오류가 없어졌다.

 

그리고 switch 취소선 코드를 보자면

이 코드는 여기서 긁어온 건데, 취소선 공부하면서 이 분의 자료를 많이 본 것 같음.

 

전에도 TIL에 정리했지만  확장(extension)이란

: 구조체, 클래스, 열거형, 프로토콜과 같은 타입에 새로운 기능을 추가(확장)

즉, extension으로 취소선 기능을 추가해 준 것임

 

추가된 기능을 myLabel에 적용해 주면 사용할 수 있음!

 

이렇게 적용했는데

 

문제 1. 스위치를 켰다가 껐다가 여러 번 해줘야 취소선이 생김.... ( 그리고 기본 상태가 꺼져있어야 함 )

문제 2. 추가하면 취소선이 없어짐! ㅠ

 

문제 1부터 해결해 보자..

아까 에러 때문에 ViewController에 있는 cell.mySwitch.isOn = false를 지웠었는데, 이걸 false로 설정을 안 해줘서 처음 값이 기본 값인 true로 되어있었던 것 같다! 저 부분을 수정해 주면 정상적으로 작동한다!

 

이제 문제 2를 해결해 보자면..

내가 데이터 저장을 안 해줘서 그런 것 같다!

할 일을 추가하고, 삭제하기 위해서는 저장을 해야 하는데 내가 이걸 따로 안 해줘서.. 에러가 생기는 것 같다..

이걸 사용해서 다시 코드를 수정해봐야겠다 .. !

어쩐지 iOS 입문과제 예시에 이게 있더라니만.... ㅠㅠㅠ

내일 delete 기능까지 완료해서 과제 제출해야지 !

 

prepareForReuse()도 이것저것 찾아보다가 발견했는데 나중에 사용할 일이 있지 않을까??

 

prepareForReuse()

: 테이블 뷰의 대리자가 재사용할 수 있도록 재사용 가능한 셀을 준비

https://developer.apple.com/documentation/uikit/uitableviewcell/1623223-prepareforreuse

 

prepareForReuse() | Apple Developer Documentation

Prepares a reusable cell for reuse by the table view’s delegate.

developer.apple.com

 

 

'TIL' 카테고리의 다른 글

24일차 TIL  (2) 2024.03.29
23일차 TIL  (1) 2024.03.28
21일차 TIL  (2) 2024.03.26
20일차 TIL  (3) 2024.03.25
19일차 TIL  (3) 2024.03.22