일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- JSONParser
- UITableView
- Xcode
- Custom PageViewController
- dynamic height
- SwiftGen
- 위클리챌린지
- 정보처리기사 실기 요약본
- Codable
- storybaord
- CustomCode
- JSONSerialization
- cocoapods
- 프로그래머스
- programmers
- pbxgroup
- PageViewController
- 티스토리챌린지
- 정보처리기사 실기
- RealmSwift
- issecuretextentry
- swift
- pbxfilesystemsynchronizedrootgroup
- Decodable
- JSON
- parse
- Pod
- IOS
- 2018 KAKAO BLIND RECRUITMENT
- 정보처리기사
- Today
- Total
목록iOS (20)
iOS 개발일기
기존에는 동적 높이를 할당할 때에 모든 UI 요소들에 제약조건을 모두 상위 뷰에 맞춰 크기가 같이 커지도록 설정된 셀만 사용했었으나, 이번 프로젝트에서 각각의 셀은 동적인 높이를 가지지만 UI 요소 중 타이틀과 버튼의 크기는 고정 크기를 가지고 유지되면서 중앙의 UILabel만 높이가 동적으로 변하도록 구성해야 됐다. AutoLayout 기반으로 UI를 코드로 작성하면서 높이를 지정해주는 상황이 적다보니 생소한 부분이기도 했고단순하게 셀의 높이를 `UITableView.automaticDimension` 으로 설정한 후에 셀 내에 타이틀과 버튼에 최소 크기를 명시해주기만 하면 속성에서 자동으로 최소 크기를 따라가지 않을까? 라는 생각에 타이틀과 버튼에 최소 크기를 지정한 결과... 셀 내에 Frame..
오픈소스 라이브러리는 각각의 라이선스들을 가지고있으며 이것들을 명시해주어야 합니다. 대부분의 오픈소스 라이브러리는 깃허브에 들어가보면 우측에 라이선스가 명시되어있고 내용도 확인할 수 있다. 이 내용들이 개발에 사용된 오픈소스 라이브러리들의 오픈소스 라이선스에 들어가는 내용이 된다. 1. 설정에서 명시하는 방법https://green1229.tistory.com/381 오픈소스 라이센스 표시안녕하세요. 그린입니다🍏 이번 포스팅에서는 앱을 구성하면서 사용한 오픈소스 라이센스를 디바이스 해당 앱 설정에서 표시하는 방법에 대해 알아보겠습니다🙋🏻 앱에서 사용된 오픈소스green1229.tistory.com 만약, 추가적으로 명시를 하고 싶다면 `LicensePlist` 폴더 내에 `Command ..
Realm 이란모바일 환경에 특화되어 있고 No-SQL이며 디스크에 JSON 형태로 데이터를 저장하여 처리속도가 빠르다는 장점이 있다. Realm을 선택한 이유현재까지 iOS 내에서 Realm, SQLite, FMDB와 같은 데이터베이스를 사용해 보았습니다. ( + CoreData )(초기에는 FMDB를 이용해서 데이터베이스를 관리했었는데 SQLite를 Swift 환경에서 사용하기 쉽도록 만들어진 라이브러리라 그런지 기본 원리는 같아도 확실히 편의성에서는 SQLite보다 FMDB가 훨씬 좋았습니다.) Realm은 비교적 최근에 사용하였는데, 이번 새로운 프로젝트에 내부 데이터베이스에서 대용량 데이터 관리가 필요하여 빠른 처리 속도를 보장(모바일에 특화된 No-SQL 데이터베이스이기 때문)할 수 있는 ..
SwiftGen 이란프로젝트 리소스(예: 색상, 이미지, 다국어 등)에 대한 Swift 코드를 자동으로 생성하여 안전하게 사용할 수 있도록 해주는 도구 기존 색상이나, 이미지 등을 사용하기 위해서는 아래와 같이 직접 생성해주어야 됐습니다.이러한 방식을 사용하는 것이 기본이긴 하나 기존 리소스가 삭제되거나 변경되었을 경우 관리에 어려움이 있다는 단점이 있었습니다.extension UIColor { static let background = UIColor(named: "background")} 이러한 리소스들을 상수로 자동으로 관리해주는 도구입니다. GitHub - SwiftGen/SwiftGen: The Swift code generator for your assets, storyboards, Loc..
원인Xcode 15 이상에서 코코아팟을 설치하거나 업데이트 했을 경우 충돌하면서 생기는 현상(Pod file 내에 아무것도 설치되어 있지 않거나 실행 권한을 필요로 하는 라이브러리나 프레임워크에 한해서 발생하는 것 같다.) Xcode 15 버전 부터 'ENABLE_USER_SCRIPT_SANDBOXING' 설정이 필수적으로 활성화 되기 때문이라고 한다. 해결 방법 Project → Target → Build Settings → Build Options → User Script Sandboxing (Yes → No)(User Script Sandboxing 옵션을 No 로 변경해주어 Swift가 아닌 파일을 읽을 수 있도록 해줍니다.) BEFORE AFTER 참조https://stackoverfl..
Xcode 16 버전으로 업데이트 후 프로젝트를 생성 후 pod init을 하려하는데 에러가 발생했습니다. 본 에러가 발생하기 전 두 개의 에러가 더 있었는데 동일한 에러가 발생하시는 분이 계실 경우 도움이 되고자 링크 남겨 놓았습니다.1. 2024.09.29 - [iOS/Xcode] - [Xcode] xcode-select: error: tool 'xcodebuild' requires Xcode 에러 해결 방법2. 2022.03.18 - [iOS/Xcode] - [Xcode] M1 환경에서 발생하는 pod update 에러 해결 방법 RuntimeError - `PBXGroup` attempted to initialize an object with unknown ISA `PBXFileSystemSyn..
프로젝트에 코코아팟 설치를 위해 'pod init' 해주니 아래와 같은 에러가 발생했습니다.xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance 원인은 Command Line Tools 이 선택되어 있지 않아 발생하는 에러였습니다.검색을 해본 결과 여러 방법이 있었지만 필자의 경우 Xcode 내에서 Command Line Tools 버전을 선택하는 방법으로 해결하였습니다. Xcode → Setting → Locations → Command Line Tools → 버전 선택 참조h..
pod 업데이트 후 Charts 라이브러리에 에러가 발생하여 확인해보니 프로토콜을 준수하지 않는다고 합니다.두번째 에러 내용을 보고 'replaceSubrange(_:with:)' 메소드를 추가하여야 된다 생각하여 메서드 내 작성할 내용을 알아보기 위해 검색을 해본 결과public func replaceSubrange( _ subrange: Swift.Range, with newElements: C) where C : Collection, Element == C.Element { entries.replaceSubrange(subrange, with: newElements) notifyDataSetChanged()} 위와 같이 작성하여 추가해주면 된다는 것을 확인했습니다. 참조..
SDK does not contain 'libarclite' 에러가 발생하는 원인Xcode의 버전이 14.3 이상일 경우, pod 파일을 업데이트한 후에 빌드를 하게 되면 빌드 시 각 라이브러리 또는 프레임워크의 최소 지원 버전이 8.0 이하일 경우 발생하는 에러 해결 방법위 사진에 에러 내용을 직역해보면 라이브러리의 최소 배포 버전을 올려보라고 적혀있습니다. 방법 1. 에러가 발생하는 라이브러리의 최소 배포 버전 올리기 Pods → 라이브러리 및 프레임워크 → Minimum Deployments → 버전 변경 방법 2. Pod 파일 수정을 통한 프로젝트 내 모든 라이브러리 또는 프레임워크 배포 버전 변경post_install do |installer| installer.generate..
func tableView( _ tableView: UITableView, didSelectRowAt indexPath: IndexPath ) { ... } func collectionView( _ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath ) { ... } 위 두 함수가 호출되지 않는 이유 1. delegate를 설정해주지 않았을 경우 tableView.delegate = self collectionView.delegate = self 위 같은 방법은 단순한 방법이라 실수를 했을 경우가 많을 것 같네요. 2. tableView 또는 collectionView의 상위 뷰가 'tapGesture'를 가지고 있는 경우' 이 ..