ios
-
[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
-
MVC 패턴iOS 2019. 8. 7. 23:50
요약 Model - View - Controller 의 약자. 모델은 데이터, 뷰는 뷰, 컨트롤러는 둘의 연결. 모델과 뷰는 완전독립, C → M, V 는 가능. M → C 또는 V → C 는 바람직하지 않음. 노티, 딜리게이트 등을 이용함. 장점: 각각의 역할을 독립시켜 생산성이 높다. 단점: 모델의 네트워크 처리, 뷰의 라이프 사이클 등이 컨트롤러에 집중되서 controller 의 크기가 커질 수 있음. MVC 패턴이란 애플에서 iOS를 개발할 때 권장하는 아키텍처 모델이다. 아키텍처 모델은 프로그램의 유지보수를 쉽게, 단위 테스트를 할 수 있게 하는 것을 목표로 둔다. 최근에는 MVC 의 문제점을 극복하기 위해 MVC-N, MVVM, MVP 등 여러 모델들이 나오고 있지만, 먼저 기본이 되는 MVC..
-
iOS)BoostCourse) PTJ2 SignUpiOS 2019. 8. 1. 02:54
부스트코스 PTJ1을 진행하면서 배운 내용과 리뷰받은 내용을 정리해보고자 합니다. 스스로 공부하며 이해한 내용을 적은 것으로 내용에 오류가 있을 수 있습니다. 오류 또는 수정이 필요한 부분은 댓글로 남겨주시면 정말 감사하겠습니다! Contents Delegation UIImagePickerControllerDelegate imageView Clickable dismiss Singleton Delegation Delegation 은 클래스 또는 구조체가 자신의 일부 역할을 다른 유형의 객체에게 양도 또는 위임할 수 있도록 하는 디자인 패턴이다. delegate 란 사전적 의미로 위임, 대리(자), 위임하다 등의 뜻을 갖고 있다. 사전적 의미에서 추측해볼 수 있듯이 하나의 객체가 다른 객체를 대신해서 어떠한..
-
iOS) BoostCourse) PTJ1 MusicPlayeriOS 2019. 7. 14. 16:13
MusicPlayer 부스트코스 PTJ1을 진행하면서 배운 내용과 리뷰받은 내용을 정리해보고자 합니다. 스스로 공부하며 이해한 내용을 적은 것으로 내용에 오류가 있을 수 있습니다. 오류 또는 수정이 필요한 부분은 댓글로 남겨주시면 정말 감사하겠습니다! Contents AVFoundation AVAudioPlayer Timer @escaping [unowned self] truncatingRemainder Optional과 예외처리 PTJ1을 공부하면서 새롭게 배운 내용들을 정리해보고자 합니다! 사실 구현 자체는 부스트코스의 PTJ1을 성실하게 들었다면 모두 쉽게 할 수 있는 내용이므로 구현 자체가 아닌 그 안의 숨은 내용들을 공부하고자 합니다. 기능 구현보다는 그 외의 내용들이 더 주가 될 수도 있겠네요..
-
iOS) Core Data document 뿌시기 - 1iOS 2019. 7. 4. 00:19
Core Data document 뿌시기 - 1 Core Data라는 그녀석, 저는 왜 이렇게 어렵게만 느껴질까요. 이 자료 저 자료 각자 방식이 조금씩 다르고 내 앱에 맞춰 사용하기가 어렵게 느껴지네요.. 이럴땐 역시 공식 문서를 보는게 답이겠죠?! 이녀석 한번 같이 정복해보자구요! 도큐먼트를 보고 혼자 찾아보고 공부한 내용으로 오역 또는 오류가 있을 수 있습니다. 혹시 문제가 있는 부분은 댓글로 남겨주시면 감사하겠습니다!! 우선 Core Data가 뭔지 어떤 기능들이 있는지부터 살펴봐야겠죠? Overview Core Data는 오프라인 사용을 위해 앱의 데이터를 영구적으로 저장하기 위해 사용되며, 임시 데이터를 캐시에 저장하고 undo 기능을 추가할 수 있습니다. 데이터 모델 편집기를 통해서 데이터의..
-
iOS) Status Bar, Navigation Bar 바꾸기iOS 2019. 6. 7. 19:38
오늘은 Status Bar 와 Navigation Bar 의 색을 바꿔보도록 하겠습니다! 대부분 아시겠지만 우선 Status Bar와 Navigation Bar의 차이부터 알아보도록 할까요? 둘의 차이가 보이시나요? 사진에서는 비슷해 보이지만, StatusBar는 말 그대로 아이폰에서 시간이 표시되는 영역입니다. NavigationBar는 다음과 같이 navigation item들이 올 수가 있어요. 중요한건 Navigation Bar가 있는 상태에서는 status bar를 덮어버리기 때문에 status bar를 변경해도 status bar의 변화가 보이지 않는습니다. 때문에 Navigation bar가 있는 상태라면 아무리 statusbar를 바꿔도 효과가 없어 보인다는 점… 기억해주세요 ( 저처럼 시..