전체 글
-
UserDefaults개발/iOS 2020. 12. 5. 12:31
앱을 개발하다 보면 종종 단일의 데이터를 저장해야하는 경우가 생긴다. 예로 들면 어떤 가이드 화면을 보여줬는지 안보여줬는지 유무를 저장하는 Boolean 타입의 데이터나 영상의 음량을 미리 정해두는 Float 타입의 데이터값 같은 것들이 있다. 이런 데이터들은 관계형 데이터베이스로 저장하는 것 보다는 key - value로 저장하는게 효율적인데 iOS에서는 UserDefaults라는 라이브러리를 이용해 이 기능을 제공한다. 안드로이드를 경험한 개발자들은 SharedPreference 클래스와 비슷한 역할을 한다고 보면 될 것 같다. 사용하는 방법도 비슷하고 간편하다. class TodoListViewController: UITableViewController { let defaults = UserDefa..
-
IQKeyboardManager개발/iOS 2020. 11. 30. 11:07
iOS에서도 소프트 키보드를 토글하면 UI 뷰 화면을 덮어버리는 문제가 있었다. 안드에서는 그래도 activity 단에서 키보드가 뜰때 어떻게 UI 레이아웃을 변형할지 어느정도 조정이 가능한데 ios에서는 그런게 특별히 없는 것 같다. 키보드가 뜰 때 마다 OS에 물어봐서 keyboard의 height를 알아오고 그에 맞춰서 View를 올려줘야 한다고 하는데.. 매번 하기엔 꽤 번거로운 일이다. 다행히 삽질(?)을 미리 해두고 라이브러리 형태로 배포를 해뒀다고 한다. 라이브러리 이름은 IQKeyboardManager 이고 사용방법도 아주 간단하다. 먼저 cocoapod을 이용해 라이브러리를 임포트 하자. platform :ios, '13.0' target 'Flash Chat iOS13' do use_f..
-
URLSession개발/iOS 2020. 11. 30. 10:42
JAVA나 C, C++과 마찬가지로 swift 언어의 라이브러리를 이용해서 외부 서버랑 통신을 주고 받을 수 있다. 절차도 비슷한데 1. 먼저 통신할 주소를 URL 클래스로 생성하고 2. URLSession 을 만든 다음 3. URLSession에 아까 만든 주소로 task를 할당하고 응답시 처리할 코드를 입력하고 4. task를 실행한다. func performRequest(_ urlString: String) { // 1. Create a URL if let url = URL(string: urlString) { // 2. Create a URL session let session = URLSession(configuration: .default) // 3. Give the session a task..
-
Pod개발/iOS 2020. 11. 30. 10:32
안드로이드에서 build.gradle 파일을 수정해 파이어베이스나 외부 깃허브 라이브러리를 다운 받을 수 있었던 것처럼 Xcode에서는 cocoapod과 swiftpackage 라는 툴로 이런 기능을 제공하고 있는데 . swiftpackage는 비교적 최근에 애플에서 만들었고 사용하기도 간편하지만 보편화되지 않아서 아직까지는 cocoapod을 상요하는 추세라고 한다. 이번 포스트에서는 cocoapod을 사용해서 외부 라이브러리를 임포트 하는 방법을 다뤄보려고 한다. 1. cocoapod 설치하기 맥북에 cocoapod이 설치되지 않았다면 아래 명령어로 터미널을 켜서 cocoapod을 먼저 설치한다. sudo gem install cocoapods pod setup --verbose 2. 프로젝트에 pod..
-
애드핏 광고 등록사이드 프로젝트/이기적인 총무 2020. 11. 24. 14:25
옛날에는 구글 애드센스로만 광고를 넣을 수 있었는데 요새는 Dable, Tenting 처럼 다양한 플랫폼에서도 블로그나 앱에 광고를 넣을 수 있게됐다. 그중 주변에 나랑 비슷하게 사이드 프로젝트를 진행중이신 분들이 카카오의 애드핏을 많이 추천하셔서 나도 내가 옛날에 열심히 만든 이기적인 총무애 애드핏으로 광고를 넣어봤다. 훌륭한 개발자가 많은 회사라 그런지(?) 넣는 과정은 어렵지 않고 깔끔했는데 이번 포스트에선 애드핏으로 Android 앱 광고를 넣는 방법을 소개해보려고 한다. 1. 애드핏 라이브러리 임포트 애드핏에선 안드로이드에 광고를 넣기 위한 별도의 라이브러리를 만들어줬다. 이 라인들을 추가해서 새로운 라이브러리를 임포트하자. // app 단위 build.gradle + implementation..
-
코드 한 줄 짜는데 시간이 오래 걸린다개발자의 생각/브런치 2020. 11. 24. 13:49
2418 insertion(+), 780 deletions(-) 윗 문장의 두 숫자는 2년간 회사에서 소프트웨어 개발하면서 회사 깃허브에 내가 추가하고 삭제한 라인의 수다. 순수히 개발과 관련된 코드만 카운트하고자 리팩토링과 주석을 추가한 커밋, 오픈 소스의 일부 기능을 빌려온 코드, Initial Commit 같은 것은 빼고 기능 추가 또는 버그 픽스를 위한 커밋만 추려냈다. 물론 이중에서도 다른 사람의 코드가 포함될 수 있으나 역으로 다른 사람의 커밋에도 내 코드가 포함돼 있을 것이니 어느 정도 상쇄한다고 보자. 별로 큰 차이는 없을 것이다. 제타위키에 따르면 휴가를 고려하지 않고 한국인이 1년간 일하는 날은 249일 정도가 된다고 한다. 여기서 2를 곱하면 난 2년간 최대 458일 일했을 것이다. ..
-
tableview개발/iOS 2020. 11. 24. 13:37
안드로이드의 listview, recyclerview 처럼 ios에서도 여러 개의 동일한 형태의 아이템을 리스트 형태로 보여주는 UI 라이브러리가 있는데 바로 tableview 다. ios의 tableview는 크게 여러 개의 아이템을 바인딩하는 tableview와 각 table 안에 item을 그리는 cell로 이뤄져 있는데 안드로이드의 recyclerview와 viewholder 간의 관계와 동일하게 보면 될 것 같다. 이번 포스트에서는 view controller에서 가지고 있는 데이터를 tableview를 이용해서 리스트의 형태로 보여주는 간단한 예제를 다뤄보려고한다. 1. cell 생성 테이블에서 보여줄 아이템의 UI를 스토리보드의 형태로 그리는 작업이다. New File -> Cocoa Tou..
-
codable개발/iOS 2020. 11. 23. 15:49
codable은 swift4에서 추가된 프로토콜로 JSON 처리를 손쉽게 해준다. 예로 서버로부터 이런 json 결과물을 받으면 { "coord": { "lon": -0.13, "lat": 51.51 }, "weather": [ { "id": 721, "main": "Haze", "description": "haze", "icon": "50n" } ], "base": "stations", "main": { "temp": 4.91, "feels_like": 1.93, "temp_min": 4.44, "temp_max": 6, "pressure": 1028, "humidity": 87 }, "visibility": 2800, "wind": { "speed": 2.1, "deg": 230 }, "clouds"..