전체 글
-
나만의 String 만들기, NSMutableAttributedStringiOS 2019. 10. 14. 15:31
String에 폰트, 색, 굵기 등 여러가지 attributes를 주고 싶을 때 사용한다. String attribute는 [NSAttributedString.Key: Any]의 dictionary 형태로 관리되므로, NSAttributedString.key가 attribute의 이름이 되겠다. var multipleAttributes = [NSAttributedString.Key : Any]() multipleAttributes[NSAttributedString.Key.foregroundColor] = UIColor.green multipleAttributes[NSAttributedString.Key.backgroundColor] = UIColor.yellow multipleAttributes[NSAt..
-
UIToolbar Align items ProgrammaticallyiOS 2019. 10. 9. 16:34
이런 왼쪽, 가운데 오른쪽에 배치된 툴바는 여러 앱에서 흔히 볼 수 있습니다. stroryboard를 사용하면 간단하지만, 오늘은 코드로 짜는 방법을 알아볼까해요! navigationBar는 왼쪽, 오른쪽에 우리가 직관적으로 생각할 수 있는 방법으로 추가할 수가 있지만, 툴바는 조금 다른 방법을 사용해야 합니다. UIToolbar, UIBarButtonItem 우선 툴바와 그 안의 아이템부터 알아봅시다. 기본 구조는 우선 UIToolBar를 만들고, 그 안에 [UIBarButtonItem]을 추가하는 방식이에요. let toolbar = UIToolbar() view.addSubview(toolbar) toolbar.translatesAutoresizingMaskIntoConstraints = false..
-
Socket 통신Computer Science/Network 2019. 9. 23. 20:54
Socket 이란 소켓(Socket)의 사전적 정의는 구멍, 연결, 콘센트 등이다. 가정에서 사용하는 콘센트의 돼지코와 코드를 생각하면 쉽게 이해할 수 있다. 네트워크 프로그래밍적으로 생각해보면 프로그램이 네트워크에서 데이터를 송수신 할 수 있도록 네트워크 환경에 연결할 수 있게 만들어진 연결부 혹은 창구가 바로 소켓이다. 콘센트에도 220v, 110v 등 규격이 있듯이 소켓도 통신 프로토콜 규격에 맞게 만들어져야 한다. 소켓은 특히 OSI 7 계층의 4계층인 TCP 상에서 동작하는 소켓을 주로 사용하는데 흔히 "TCP 소켓", "TCP/IP 소켓" 이라 부른다. Socket Programming 소켓으로 네트워크 통신 기능을 구현하기 위해서는 기본적으로 다음에 대한 이해가 있어야 한다. 클라이언트 소켓..
-
[RealmSwift Error] Error Domain=io.realm Code=10iOS 2019. 9. 23. 12:29
RealmSwift를 잘 사용하다가 다음과 같은 에러가 발생할 경우가 있다. Error [Domain=io.realm](Domain=io.realm) Code=10 "Migration is required due to the following errors 사실 이 문제는 앱을 지웠다가 깔면 해결되는데, 시뮬레이터에서는 간단하지만 이미 배포된 앱이라면 간단한 문제가 아니다. 이 문제는 초기화 전에 Migration을 시도해서 발생한다. 따라서 초기화 될 때까지 기다리도록 하면 된다. lazy var realm: Realm? = { do { return try Realm() } catch { print("Could not access Realm, \(error)") return nil } }() 간단하게 나..
-
KVO(Key-Value-Observing)Swift 2019. 9. 20. 17:49
객체의 어떤 값이 변경되었을 경우 이를 감지하기 위해 사용한다. KVO는 변수에 코드를 붙여 변수가 변경될 때마다 코드가 실행되도록 하는 방법이다. property observers(willset , didSet)과 아주 유사한데 KVO는 타입 정의 밖에서 observe를 추가한다는 점이 다르다. KVO는 순수 스위프트 코드로는 그리 좋지 않은데, Objective-c 런타임에 의존하고 있기 때문이다. 그래서 NSObject 를 상속받기 위해 @objc 를 반드시 붙여줘야 한다. 특히 KVO는 속성 각각에 @objc dynamic 을 붙여줘야 한다. dynamic 은 objective-c 의 문법의 하난데, 특정 method나 function의 구현을 objective-c 런타임에서 하겠다고 결정하는 것..
-
KVC(Key-Value-Coding)iOS 2019. 9. 20. 17:46
정의 문자열(또는 키)를 사용해 간접적으로 객체의 속성 값에 접근하는 매커니즘을 말한다. Key-value-coding은 key-value-observing, cocoa bindings, core data와 함께 작업하는 기본적인 기술이다. 특징 키가 되는 문자열은 런타임 시 결정된다. 소스 코드가 간결해지면서 유지 보수가 쉬워진다. 클래스 간 의존성이 낮아진다. 참고 About Key-Value Coding [iOS]Key Value Coding, Key Value Observing
-
ORM (Object Relational Mapping)Computer Science/Database 2019. 9. 17. 10:52
Object Relational Mapping에 대해 알아보자. 말 그대로 객체 - 관계를 매핑시켜주는 녀석인데, 쉽게말해 객체와 데이터베이스의 데이터를 자동으로 매핑 해주는 것을 말한다. 이를 통해 복잡한 쿼리를 줄일 수 있고 OOP 개발 자체에 더 집중할 수 있다. 장점 객체지향적인 코드로 더 직관적이고 비즈니스 로직에 더 집중할 수 있다. SQL 쿼리 대신 직관적인 코드로 데이터를 조작할 수 있어서 객체 모델에 더 집중할 수 있다. 선언문, 할당, 종료 같은 부수적인 코드가 없거나 급격히 줄어든다. SQL의 절차적, 순차적 접근이 아닌 객체지향적 접근으로 생산성이 증가한다. 재사용 및 유지보수의 편리성이 증가한다. ORM은 독립적으로 작성되어 있고, 객체들을 재활용 할 수 있다. 때문에 모델에서 가..
-
지적대화를 위한 넓고 얕은 지식일상/독서 2019. 8. 21. 23:38
지대넓얕을 읽고 . . . 채사장님이 지은 지대넓얕, 베스트셀러지만 은근히 많은 사람들이 잘 모르는 책이다. (물론 지극히 주관적인 사견이다.) 채사장은 내가 한참 방황하던 20살 초반에 우연히 한 강연에서 처음 만나게 되었다. 그때 들었던 다소 충격적인 비유는 아직도 기억에 남는다. 정확히 맞는지는 모르겠지만 대강은 이런거였다. 한 사회가 있다. A, B, C, D가 각각 60, 30, 9, 1의 소득을 차지한다면 이 사회는 바람직한가? 당신의 생각은 어떠한가? 1밖에 가지지 못한 사람을 위해 나머지는 자신의 소득을 나눠줘야 하는게 맞는 것일까? 누군가는 당연히 1밖에 가지지 못한 사람을 위해 나머지가 조금씩 나눠주는게 맞다고 할 수도 있고, 또 누군가는 정당한 노력의 결과라면 굳이 도와주지 않아도 된..