분류 전체보기 222

[iOS/Swift] UITableView 행 삭제를 빠르게 했을 때 앱 크래쉬 나는 현상 (App Crash When Deleting row fastly)

1) Issue 사이드프로젝트의 QC를 진행하던 중, 아래 테이블뷰 옆에 달려있는 행 삭제 버튼을 빠르게 연타(삭제 버튼을 누르면 해당 항목이 삭제되고 그 다음 항목이 올라오게 되는데, 그 버튼을 계속 빠르게 연타했을 때의 상황이었음) 했을 때 앱이 크래쉬난다는 이야기를 팀원으로부터 들을 수 있었고 Firebase Crashlytics의 내용을 살펴보니 아래 내용에서 크래쉬가 나고 있었음을 알 수 있었다. 아래 코드는 현재 내가 누른 셀의 테이블뷰에서의 indexPath를 가져오는 코드이다. 에러는 'doneTableView의 현재 cell의 indexPath를 가져올 수 없다. nil값인데 강제로 왜 언래핑 하려고 하니!' 라는 에러였다. 2) Problem 우선 cell에 해당하는 indexPath가..

[Swift] 스위프트

본 포스팅은 '스위프트 프로그래밍 (3판)' 도서와 레퍼런스를 참고하여 Swift 프로그래밍에 대해 정리하는 글입니다. 혹시 틀린 부분이 있거나 질문이 있으시다면 언제든지 댓글 달아주시면 정말 감사하겠습니다 :) 1. 스위프트란 무엇인가? - 안전을 우선으로 하는 프로그래밍 패턴 지향하는 언어 - ARC(Automatic Reference Counting, 자동 참조 카운팅) 지원하므로 쉽게 메모리를 관리할 수 있음 * arc 공식문서 : https://docs.swift.org/swift-book/documentation/the-swift-programming-language/automaticreferencecounting/ ARC는 클래스 인스턴스가 더 이상 필요하지 않을 때 메모리를 자동으로 해제하..

🐦 Swift 2023.03.07

[Swift] 조합(combination), 순열(permutation)

✅ 조합 vs 순열 차이 - 순열 : AB, BA가 다름 (순서가 중요하기 때문에) - 조합 : AB, BA가 똑같음 (순서가 중요하지 않음) 예를들어 자물쇠 번호를 123으로 해야만 풀리고 321로는 풀리지 않듯이, 순서가 중요한 것이 순열이며 샐러드에 닭가슴살을 넣은 다음 드레싱을 넣든, 드레싱을 넣은 다음 닭가슴살을 넣든 결과는 똑같기 때문에 순서는 중요하지 않는 것이 조합이다. 조합 - 순서와 상관없이, 중복 없이 n개중에 r개를 선택한 경우들을 나열 - 예를들어 [1, 2, 3]에서 서로 다른 2개의 원소를 뽑아 나열하는 경우, 중복을 고려해야하기 때문에 (1, 2), (1, 3), (2, 3)의 경우의 수가 존재한다. - 조합 공식 : func combi(_ nums: [Int], _ targ..

[Swift] 프로그래머스 - 문자열 압축 (Level. 2)

문제https://school.programmers.co.kr/learn/courses/30/lessons/60057?language=swift 코드import Foundationfunc solution(_ s:String) -> Int { let N = s.map { String($0) } if N.count == 1 { return 1 } var array = [N.count] //맨 처음 비교대상은 한번도 압축이 되지 않을때, 즉 문자열 자체의 길이 var answer = "" var prev = "" var count = 1 for step in 1...N.count/2 { //최대로 압축할 수 있는 범위가 문자열 절반의 길이 ..

[Swift] 백준 1080 - 행렬

문제 https://www.acmicpc.net/problem/1080 1080번: 행렬 첫째 줄에 행렬의 크기 N M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 행렬 A가 주어지고, 그 다음줄부터 N개의 줄에는 행렬 B가 주어진다. www.acmicpc.net 코드 let input = readLine()!.split(separator:" ").map { String($0) }.map{ Int($0)!} let N = input[0] let M = input[1] var A:[[Int]] = [] var B:[[Int]] = [] var cnt = 0 for _ in 0...N-1 { A.append(readLine()!.map { String($0) }.map..

[Swift] 백준 1541 - 잃어버린 괄호

문제 https://www.acmicpc.net/problem/1541 코드 var array = readLine()!.split(separator: "-").map { String($0) } array = array.filter { $0 != "" } //공백제거 var sum = 0 var count = 0 var sum_array:[Int] = [] for i in array { count = i.split(separator:"+").map { Int($0)!}.reduce(0, +) sum_array.append(count) } if sum_array.count == 1 { // "+"만 있는 경우 -> 위에서 array의 count가 1이기 때문에 더한 값이 있는 배열의 크기도 1임 print(..

[Swift] 백준 10610 - 30

문제 https://www.acmicpc.net/problem/10610 코드 let input = readLine()!.map{ String($0) } //쪼개서 정수 배열로 저장 var sum = 0 if !input.contains("0"){ print(-1) } else{ for i in input { sum += Int(i)! } if sum%3 == 0 { print(input.sorted(by: >).joined()) } else{ print(-1) } } 풀이 30의 배수임을 판별하기 위해서는 끝이 0이 아닌지와 각 자릿수를 더한 값이 3의 배수인지를 판별하면 된다. 따라서 input에 0이 들어가있지 않으면 30의 배수가 아니므로 바로 -1을 프린트해주었고, 다 더했을 때 3의 배수이면 ..

[Swift] 프로그래머스 입문 - 겹치는 선분의 길이

문제 https://school.programmers.co.kr/learn/courses/30/lessons/120876선분 3개가 평행하게 놓여 있습니다. 세 선분의 시작과 끝 좌표가 [[start, end], [start, end], [start, end]] 형태로 들어있는 2차원 배열 lines가 매개변수로 주어질 때, 두 개 이상의 선분이 겹치는 부분의 길이를 return 하도록 solution 함수를 완성해보세요.lines가 [[0, 2], [-3, -1], [-2, 1]]일 때 그림으로 나타내면 다음과 같습니다.선분이 두 개 이상 겹친 곳은 [-2, -1], [0, 1]로 길이 2만큼 겹쳐있습니다.제한사항lines의 길이 = 3lines의 원소의 길이 = 2모든 선분은 길이가 1 이상입니다.l..

[RxSwift] RxSwift + MVVM + Moya 적용 (feat. tableview binding)

Podfile # Moya with rx pod 'Moya/RxSwift', '~> 15.0' # RxSwift & Cocoa pod 'RxSwift', '~> 6.5.0' pod 'RxCocoa', '~> 6.5.0' # SwiftyJson pod 'SwiftyJSON', '~> 4.0' 1. 엮을 API의 구조 header x-access-token : jwt 토큰 response { "isSuccess": true, "code": 1000, "message": "성공", "result" : [ { "profileImageUrl" : "이미지 링크", "roomId" : 255, "title" : "test", "repUserName" : "Runnber6421", "recentMessage" : "..

반응형