일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- JSON
- 정보처리기사
- IOS
- CustomCode
- 위클리챌린지
- storybaord
- JSONParser
- UITableView
- 2018 KAKAO BLIND RECRUITMENT
- Custom PageViewController
- Pod
- Codable
- 티스토리챌린지
- cocoapods
- Decodable
- Xcode
- JSONSerialization
- 프로그래머스
- swift
- RealmSwift
- 정보처리기사 실기 요약본
- PageViewController
- pbxfilesystemsynchronizedrootgroup
- 정보처리기사 실기
- dynamic height
- parse
- pbxgroup
- programmers
- issecuretextentry
- SwiftGen
- Today
- Total
목록swift (19)
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 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 업데이트 후 Charts 라이브러리에 에러가 발생하여 확인해보니 프로토콜을 준수하지 않는다고 합니다.두번째 에러 내용을 보고 'replaceSubrange(_:with:)' 메소드를 추가하여야 된다 생각하여 메서드 내 작성할 내용을 알아보기 위해 검색을 해본 결과public func replaceSubrange( _ subrange: Swift.Range, with newElements: C) where C : Collection, Element == C.Element { entries.replaceSubrange(subrange, with: newElements) notifyDataSetChanged()} 위와 같이 작성하여 추가해주면 된다는 것을 확인했습니다. 참조..
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'를 가지고 있는 경우' 이 ..
기존 PageViewController를 사용한 방법이 아닌 UICollectionView를 이용하여 PageViewController를 구현해보았습니다. import UIKit class PageViewController: UIViewController { var indicatorConstraint: NSLayoutConstraint? var indicatorView: UIView! var naviCollection: UICollectionView! var pageCollection: UICollectionView! override func viewDidLoad() { super.viewDidLoad() setupControls() setupLayout() initData() } private func..
오늘은 JSON 파싱 방법 중 하나인 JSONSerialization에 대해서 알아보겠습니다. JSONSerialization은 Decodable에 비해 제약이 심하지 않죠.그렇지만 Decodable이 워낙 간단하게 구현할 수 있는지라... 기본적인 JSONSerialization먼저 문자열을 하나 선언해주겠습니다.let jsonString = """ { "user_id" : 0, "user_name" : "hoon", "user_age" : 30 } """ 그 다음 JSONSerialization을 해보도록..
전편 [Swift] JSONParser - Decodable(1) Swift에서 JSON 파싱을 위한 방법에는 JSONSerialization Decodable 이 두가지 방법이 있습니다. 오늘은 Decodable을 이용하여 JSON 파싱을 하는 방법에 대해서 알아보겠습니다. 먼저 파싱에 필요한 예제 데이 93bpm.tistory.com 이번 편에서는 Decodable에 대한 이해도를 조금 더 높힐 수 있는 시간을 가져보겠습니다. Decodable은 사용하는 방법이 편하지만 생각보다 제약이 많기 때문에 정확하게 이해하고 사용해야합니다. 간단한 형식이라면 문제없이 사용할 수 있겠지만 언제나 간단한 파싱만 하지않는 법이죠...허허 어떠한 상황에서 에러가 나는지 어떻게 대처해야되는지 몇 가지 알아보도록 하겠..