개발 (93) 썸네일형 리스트형 [Swift] Core Data 알아보기 (1) Core Data CoreData는 많은 양의 데이터 속에서 어떤 것을 찾을 때를 말한다. CoreData는 즉 SQL 데이터베이스를 말하며 객체 지향 API를 가지고 있다. 스위프트 객체처럼 보이지만 실제로는 그 스위프트 객체는 SQL 데이터베이스 안에 있는 형태다. Xcode 안에 비주얼 매퍼라는 툴을 가지고 일치시킬 수 있다. 모든 객체를 만들면 변수들을 매퍼 안에 만들어지는데 값은 자동적으로 매퍼가 일치시킨다. + 데이터베이스의 구조- 테이블의 열은 레코드를, 행은 필드를 나타낸다. 이 작업은 보이지 않는 곳에서 일어나며 프로그래밍하는 동안에는 보이지 않는다. 코어 데이터를 이해하는데 가장 중요한 것은 NSManagedObjectContext를 사용한다는 점이다. NSManagedObjectCon.. [Swift] File System File System iOS는 유닉스인 것을 기억하자! 유닉스 파일 시스템에서 접근 가능한 유일한 부분은 샌드박스다. + 샌드박스는 닫혀있는 작은 공간을 말한다. 다른 앱의 정보를 적을 수 없음. iOS가 앱 공간에 제한을 두는 이유는 이렇다. Security- 다른 앱이 앱을 망가뜨리는 것을 원하지 않는다. Privacy - 사용자 정보를 수집하는 경우 다른 악성 앱들이 정보를 빼가는 것을 막는다. Clean up - 사용자가 앱을 사용하지 않으면 정보를 정리할 수 있고, 샌드박스 안에 있다면 샌드박스를 지울 수 있다. 파일 시스템의 접근은 두 개의 클래스 또는 두 개의 객체로 이루어진다는 것이다. 하나는 FileManager이고 다른 하나는 URL이다. (URL은 기본적으로 경로다.) 먼저 해야할 것.. [Swift] 객체 저장 - Archiving Archiving UserDefaults의 문제는 작은 데이터만 다루는 것과 속성 리스트만 가능하다는 점이다. 만약 저장하고자 하는 데이터가 매우 크거나 속성 리스트가 아닌 것을 포함하고 있다면, 아카이브를 사용하면 된다! 아카이브에는 NSCoder와 Codable를 이용한 두 가지 매커니즘이 있다. NSCoder NSCoder는 저장하고자 하는 모든 객체를 하나의 객체 그래프로 영구 저장한다. func encode(with aCoder: NSCoder) init(coder: NSCoder) encode를 통해 값을 저장하고 init(coder: )에서 객체를 초기화 할 수 있다. 이 함수는 객체 그래프 내에 있는 모든 객체에 호출되어 큰 딕셔너리 안에 넣어지게 된다. 주로 하는 일은 객체를 데이터로 바.. [Swift] 객체 저장 - UserDefaults UserDefaults 딕셔너리와 같다! 키와 값을 이용해 입력하고 앱을 다음 번에 열었을 때도 그대로 있게 한다. 단 하나의 제한이 있다면 이 딕셔너리 안에 넣을 수 있는 것은 속성 리스트이다. 속성리스트는 어떤 조합 어떤 데이터 구조를 말하는데 오직 배열, 딕셔너리 , 스트링, 날짜, 데이터 또는 숫자로 이루어진 조합을 말한다. UserDefaults 에는 두가지 메소드가 있다. func set(Any?, forKey: String) 키 인자에 해당하는 속성 리스트를 저장하는 메소드와, func object(forKey: String) -> Any? 키에 해당하는 속성 리스트를 반환하는 리스트이다. 속성의 값이 정수나 문자열의 배열이 될 수도 있다. 키가 문자열이고 값이 실수의 배열인 딕셔너리도 될 .. [Swift] Multithreading iOS API 의 Multithreading 예시를 살펴보자. let session = URLSession(configuration: .default) if let url = URL(string: "http://djgmd1021...") { let task = session.dataTask(with: url) { (data: Data?, response, error) in } task.resume() } URLSession은 네트워크를 통해 URL에서 정보를 가져올 때 사용한다. URL로 session에 dataTask 함수를 호출하면 dataTask를 생성하는데, 이것은 데이터를 가져오는 일을 한다. 그 후 실행이 일시 중지되는데 바로 다음 라인에 대부분 실행을 재개하라는 명령(resume)을 하고 동.. Clean Architecture 개념 Clean Architecture iOS 도메인에 있는 Clean Architecture의 다양한 구성 요소 사이의 데이터 흐름을 살펴보자. 교차 경계 섹션에서는 데이터 흐름이 단반향이어야 하는 방법에 대해 논의했다. iOS에서는 Controller와 View의 책임이 ViewController에 의해 처리되기 때문에 위의 방법을 따르는 것은 어렵다. ViewController는 사용자의 입력과 이벤트를 수신하고 적절한 View를 렌더링한다. iOS에는 ViewController의 역할을 다르게 본, 아래와 같은 아키텍처가 있다. VIP VIPER Clean Architecture에 대해 짧게 살펴보자. 대체로 UI와 데이터베이스 코드는 프레임워크에 많은 의존성을 띄고 있다. Clean Architect.. [Swift] DispatchQueue 종류 iOS에서 멀티스레딩은 큐를 이용해 작동한다. iOS 멀티스레딩 큐에는 코드 블럭들이 들어있다. 이 큐에 집어넣는 것은 거의 대부분 클로저다. 큐는 여러 개고 다양한 종류들이 있다. 이 큐에는 실행 스레드를 가진 시스템이 접근한다. 이 스레드들은 병렬로 작동할 수 있다. 우선 큐에 대해 알아보자. 직렬큐 (Serial Queue)와 병렬큐 (Concurrent Queue) 2가지가 있다. 직렬(Serial)큐는 iOS가 큐에서 하나를 꺼내고, 해당 작업이 완료될 때까지 실행시킨다. 그럼 다시 큐로 돌아와 다른 하나를 꺼내어 실행시킨다. 병렬(Concurrent)큐는 iOS가 큐에서 하나를 꺼내고 실행시킨다. iOS가 사용 가능한 다른 스레드가 있다면, 큐에 접근해서 스레드를 꺼내 실행시키는데 이는 그 전.. [Swift] ViewController LifeCycle ViewController Life Cycle 생명주기는 UIViewController가 호출한 메시지나 메소드의 순서로 표시된다. 생명주기는 왜 중요할까? 뷰 컨트롤러 생명주기의 각 단계에 개입하고 싶을 수 있고 생명주기를 통해 특정한 때에 어떤 일을 하도록 시킬 수 있다. UIViewController가 생성되면서 생명주기가 시작된다. 사실 생성된 후 가장 먼저 하는 일은 세그웨이 하도록 준비하는 것이다. 세그웨이로 인해 화면에 보이게 되면 준비하는 단계가 실행된다. 그 다음에는 아울렛을 설정한다. 그 다음 뷰 컨트롤러가 화면에 나타나고 사라질 수도 있다. 빠른 순서 요약 Instantiated awakeFromNib segue preparation happens outlets get set view.. 이전 1 ··· 7 8 9 10 11 12 다음