전체 150

[iOS-Error] Pod과 swift package manager를 동시 사용했을때

괜찮을거라 생각했는데 pod과 package manager로 각각 다른 라이브러리를 설치하니 오류가 납니다.. (어찌보면 당연한건가?) 암튼 이럴때 해결 방법을 알아내서 정리해 보려 합니다. Xcode -> preference -> Loccations -> 화살표 클릭 DrivedData 에서 프로젝트 관련 파일 모두 삭제(저는 두가지를 사용했더니 폴더가 두개 있었습니다.) 프로젝트폴더 -> pod.lock, pods 폴더 삭제 콘솔에서 -> pod install 하니 다시 정상 작동 되었습니다.

iOS/Errors 2022.02.28

[iOS] plist 데이터 불러와서 사용하기

iOS에는 plist라는 독특한 파일이 있습니다. 사실 JSON과 비슷하다고 생각되는 파일입니다. 이 파일을 읽어와 사용하는 방법을 다뤄보겠습니다. 일단 과정은 URLSession으로 json을 받아와 decoding 하는 과정과 유사합니다. 1. plist 구조의 struct를 만든다. 2. Plist 파일의 url을 가져온다. 3. Plist 파일을 Data화 한다. 4. Data를 decoding 한다. 1. struct 만들기 plist파일을 보고 struct를 만듭니다. // 예시 struct ex { let a: String let b: String let c: Bool } 나머지 과정은 한번에 진행하도록 하겠습니다. 2. Plist 파일의 url을 가져온다. 3. Plist 파일을 Data화..

iOS/Swift 2022.02.24

[iOS] collectionView 헤더(Header) 커스텀 및 사용

collectionView에서 cell은 등록하고 dequeueReusableCell 메서드로 불러와 사용했습니다. 하지만 Header는 비슷하지만 조금 다른 방식을 사용해 정리해 보려 합니다. 먼저 헤더는 UICollectionReusableView을 준수합니다. cell -> UICollectionViewCell와 다름 Header -> UICollectionReusableView 이후 헤더를 커스텀하는 방식은 기존cell처럼 하시면 됩니다. 이제 헤더를 collectionView에 register하고 불러와 사용해 보겠습니다. register collectionView.register( "헤더class".self, // 이 부분으로 header임을 구분할 수 있다. forSupplementaryVi..

iOS/UIKit 2022.02.22

[iOS] collectionView 메서드, 프로퍼티 일부 정리

추후 업데이트 예정 다른 포스팅과 내용 중복 가능 collectionView 설정 // collectionView 선언(@IBOulet이 아닌 code) private lazy var collectionView: UICollectionView = { let layout = UICollectionViewFlowLayout() layout.scrollDirection = .horizontal // 스크롤 방향 let collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout) collectionView.delegate = self collectionView.dataSource = self collectionView.isPaging..

iOS/UIKit 2022.02.22

[iOS] tableView의 메서드, 프로퍼티 일부 정리

추후 업데이트 예정 TableViewCell 관련 // cell class에 설정 // cell의 오른쪽에 화살표 생긴다. (옵션에 따라 다름) accessoryType = .disclosureIndicator // cell을 선택해도 회색이 되지 않는다. selectionStyle = .none Section 관련 메서드 // 섹션의 수 override func numberOfSections(in tableView: UITableView) -> Int { return "section의 수" } // 섹션당 row의 갯수 override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { // 0부터 시..

iOS/UIKit 2022.02.22

[iOS] TableView의 prefetching 기능

간단한 기능이지만 tableView에서 유용하게 사용할 수도 있는 기능을 알게되어 정리합니다. 일단 이 method는 화면에서 tableView의 cell이 보여지려고 할때 미리 작동되는 함수라고 생각하면 될 것 같습니다. 그래서 스크롤을 할때 다음 cell이 보여지기 전에 어떠한 이벤트를 처리하고 싶다라고 생각할때 유용하게 사용이 가능할듯 합니다. 사용 방법은 간단합니다. 1. UITableViewDataSourcePrefetching를 extension 합니다. 2. tableView.prefetchDataSource = self 를 viewDidLoad에 작성해줍니다. 3. prefetchRowsAt 메서드를 사용합니다. func tableView(_ tableView: UITableView, pr..

iOS/UIKit 2022.02.22

[iOS] URLSession으로 get method 사용

서버와 데이터를 주고받기 위해서 http 통신을 사용합니다. 보통 가장 많이 사용되는 get을 사용하는 방법을 알아보도록 하겠습니다. // 요청할 url 작성 let url = URL(string: "요청할 url") // request 만들기 + method 정해주기 var request = URLRequest(url: url) request.httpMethod = "GET" // dataTask 만들기 let dataTask = URLSession.shared.dataTask(with: url) {[weak self] data, response, error in guard let self = self else {return} // 강한 순환 참조 방지 guard error == nil else {re..

iOS/Swift 2022.02.22

[iOS] StoryBoard를 쓰지 않고 코드로 작성하기

1. info.plist에서 StoryBoard Name 삭제 2. 프로젝트에서 Deploymet Info에서 Main interface를 지우기 (원래 Main) 3. SceneDelegate의 willConnectTo의 내용 다음으로 변경 guard let windowScene = (scene as? UIWindowScene) else { return } window = UIWindow(windowScene: windowScene) window?.backgroundColor = .systemBackground window?.rootViewController = 원하는 ViewController Class() // 기존 스토리보드의 시작지점과 같다고 생각 window?.makeKeyAndVisible()

iOS/UIKit 2022.02.22

[Swift] 프로그래머스 Lv1 모의고사

스위프트로 푼 첫 문제입니다. 여기서 알게된 중요한 사실은 스위프트의 Dictionary는 순서를 보장하지 않는다는 것입니다. 따라서 Dictionary의 순서가 필요하다면 정렬해서 사용해야 합니다. import Foundation func solution(_ answers:[Int]) -> [Int] { let first: [Int] = [1,2,3,4,5] let second: [Int] = [2,1,2,3,2,4,2,5] let third: [Int] = [3,3,1,1,2,2,4,4,5,5] var right: [Int: Int] = [1: 0, 2: 0, 3: 0] var rank: [Int] = [] print(right) for i in 0.. i && first[i] == answers[i..

개발/PS 2022.02.19

[iOS] Swift package manager 스위프트 패키지 매니저 사용법

오픈소스 라이브러리를 사용하는데에는 여러가지 방법이 있습니다. 전에 cocoaPod으로 등록하는 법을 다루었고 오늘은 Swift Package Manager를 사용하는 법을 알아보도록 하겠습니다. (여담으로 저는 cocoaPod 보다 Swift Package Manager를 더 많이 쓰지 않을까 싶습니다.) 암튼.. 코코아팟과 다르게 스위프트 패키지 매니저는 workspace를 바꾸지 않아도 사용 가능합니다. 일단 스위프트 프로젝트의 General에 보시면 다음 항목이 있습니다. 다음은 원래 Name에는 아무 값도 없지만 KingFisher와 Snapkit을 사용하는 모습입니다. 여기서 왼쪽 아래 + 버튼을 누르면 다음과 같은 창이 뜹니다. Add Others -> Add Package Dependenc..

카테고리 없음 2022.02.18