- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Python
- scheduledTimer
- MVC
- NVL
- Observable
- ReLU
- struct
- barplot
- SWIFT
- 딥러닝
- swiftUI
- trunc
- decode
- deeplearning
- tapply
- Upper
- ios
- delegate
- grep
- Linux
- 연산자
- 명령어
- r
- cocoapods
- Optional
- substr
- 시각화
- sigmoid
- rxswift
- SQL
목록ios (33)
iOS 개발 기록 블로그
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cGbT7c/btrHafVrqqK/55k0l8Y94nWgNOm7e3n201/img.png)
위 이미지를 보면 Email과 Password 적는 TextFeild의 이미지가 custom 이미지가 적용된 것이다. 그림자가 져 있는 것을 볼 수 있다. Assets.xcassets에 들어가보면 있다. 경고 메시지 아래 3가지 에러가 보인다. 이를 해결하기 위해 파란색 스토리보드 화면을 클릭하고 오른쪽에 'Is initial View Controller' 체크박스를 체크해준다. 그리고 파란색 스토리보드 왼쪽에 붙어있는 '->' 이 모양 화살표를 드래그해서 첫번째 화면에 갖다 붙여준다. Register 스토리보드와 Log in 스토리보드를 Chat View Scene과 각각 연결해주는 Segue를 만들어준다. 그리고 첫화면에서 Register과 Log in 버튼을 각각 control키 + 드래그앤드롭으로..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b4jUR0/btrF4FnTmII/Hhg3NkcrzJaqkXb2sd6961/img.png)
지난 글들에서 익혔던 Networking과 API를 숙달하기 위해 비트코인 가격 조회하는 어플리케이션을 만들어볼 것이다. 지난 글 링크 iOS (Swift) GPS 받고 위도, 경도 받아서 날씨 API 데이터 받기 CoreLocation를 활용하여 위치 데이터를 받아볼 것이다. 먼저 해당 라이브러리를 import 해줘야 한다. import UIKit import CoreLocation class WeatherViewController: UIViewController { .. crazydeer.tistory.com URLSession을 사용하는 방법, HTTP Requests, JSON Parsing을 위한 JSON Decoder을 복습해볼 것이다. 흔히 거래되는 각국의 통화 별 비트코인의 가격을 조회해본..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/0HgYg/btrFXWYIu3Q/8rBG5tRDWDoVusRSu5hOw0/img.png)
CoreLocation를 활용하여 위치 데이터를 받아볼 것이다. 먼저 해당 라이브러리를 import 해줘야 한다. import UIKit import CoreLocation class WeatherViewController: UIViewController { @IBOutlet weak var conditionImageView: UIImageView! @IBOutlet weak var temperatureLabel: UILabel! @IBOutlet weak var cityLabel: UILabel! @IBOutlet weak var searchTextField: UITextField! var weatherManager = WeatherManager() let locationManager = CLLocat..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Y6vt9/btrFSXWK2qC/lw8Mm5xdxLuhUQq7NyxIFk/img.png)
여러가지 예시와 함께 Swift의 extension에 대해 알아보자. 지하철의 노선과 역이 계속 추가되는 것처럼 일반적으로 앱도 계속해서 기능들이 덧붙여져서 확장한다. Extensions — The Swift Programming Language (Swift 5.7) Extensions Extensions add new functionality to an existing class, structure, enumeration, or protocol type. This includes the ability to extend types for which you don’t have access to the original source code (known as retroactive modeling). Exten..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bAkgFr/btrFyJSGDfH/km0v4cxAbaXw4ASrbo10IK/img.png)
iOS (Swift) JSON 디코딩(Decoding) func performRequest(urlString: String) { //1. Create a URL if let url = URL(string: urlString) { //2. Create a URLSession let session = URLSession(configuration: .default) //3. Giv.. crazydeer.tistory.com 지난 글에 이어 JSON을 정리하면서 MVC 디자인 패턴으로 바꾸고 그 과정에서 Computed Properties도 이해해보자. OpenWeatherAPI 문서가 제공하는 json 예시다. 여기에 id는 날씨 상태를 말하는데 이에 따라 아이콘이 변화하도록 해볼 것이다. Weather co..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/thMxZ/btrFAis2Vao/VLJ11Upg3faarovH04Pjo1/img.png)
func performRequest(urlString: String) { //1. Create a URL if let url = URL(string: urlString) { //2. Create a URLSession let session = URLSession(configuration: .default) //3. Give URLSession a task let task = session.dataTask(with: url) { data, response, error in if error != nil { print(error!) return// 에러가 있으면 스톱 } if let safeData = data { // safeData를 String 형태로 변환 } } //4. Start the task ta..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cONvf1/btrFoOGgv6V/kuM8MTKuhEz5x2RqJ1wjo1/img.png)
일반적인 함수의 형태는 아래와 같다. func functionName (param1: dataType, param2: dataType) -> dataType { return output } 특정 데이터가 입력되어 함수를 통과하면 데이터가 출력된다. 이 입력된 데이터들을 또 다른 함수를 통과하도록 할 수 있다. import UIKit import Foundation func calculator(n1: Int, n2: Int, operation: (Int, Int) -> Int) -> Int{ return operation(n1, n2) } func add(n1: Int, n2: Int) -> Int{ return n1 + n2 } print(calculator(n1: 2, n2: 3, operation: ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/es5ld4/btrFdelm2Bi/o4b4RwF4cOwK7vJrRLwYNk/img.png)
API 란? 명령어, 함수, 프로토콜, 객체 등의 집합으로 많은 프로그래머들이 소프트웨어를 만들거나 외부 시스템과 상호작용하는 데에 사용할 수 있는 것이다. 많은 개발자들이 흔한 기능들을 동작하기 위한 표준 명령어를 제공하고 그들은 코드를 작성할 필요가 없다. API의 유형 소프트웨어를 만들기 위해 사용되는 API 외부 시스템과 상호작용하기 위해 사용되는 API 소프트웨어를 만들기 위해 사용되는 API 우리는 iOS 앱을 만들 때 이미 많은 API를 사용하고 있다. Apple Developer Documentation developer.apple.com 위 이미지처럼 오디오를 재생하기 위해 이미 애플 사에서 만들어 놓은 API를 그들이 제시해놓은 표준 명령어 흔히 사용하여 앱 제작을 한다. 외부 시스템과..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dpmMpg/btrEU157AMg/tyiPBhO3HJBUEjG3QXNe9k/img.png)
iOS의 중요한 디자인 패턴 중에 하나인 delegate 패턴에 관해 알아보자. 전에 게시했던 글 중에 MVC, Model View Controller 디자인 패턴에 관한 글이 있다. iOS(Swift) Design Pattern: MVC (Model View Controller) 1편 iOS App 프로그래밍에서 정말 정말 중요한 디자인 패턴 MVC를 알아보자. 우선 이 MVC나 MVVM 등 애플이 채택(?)한 디자인 패턴은 대부분의 채용에 필수요건으로 포함되어 있다. 그만큼 이것은 정말 중 crazydeer.tistory.com 그럼 Delegate와 같은 또다른 디자인 패턴이 왜 필요할까? 전에도 말했던 것처럼 디자인 패턴이란 흔한 문제들에 대한 증명된 해결방법이다. 여기서 '문제'라는 것은 무엇을..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/rQuyl/btrEJJeIN65/mLdjFK7fIbOix1muxofMAk/img.png)
지난 글에서 UITextFieldDelegate 라는 프로토콜이 있었다. 코드 class Bird { var isFemale= true func layEgg() { if isFemale{ print("Lay egg.") } } func fly() { print("Fly.") } } class Eagle: Bird{ func soar() { print("Soar.") } } class Penguin: Bird { func swim() { print("Swim.") } } let myEagle = Eagle() myEagle.fly() myEagle.layEgg() let myPenguin = Penguin() myPenguin.layEgg() myPenguin.swim() myPenguin.fly() 위 ..