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