일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- forEach
- UserDefaults
- 인프런
- 오브젝트
- core data
- Algorithm
- 데드락
- 가상 메모리
- 비동기
- 100 days of SwiftUI
- IOS
- scrollview
- 동기화
- 상호배제
- async
- Codable
- Swift
- Linked List
- 알고리즘
- @state
- deadlock
- 동시성
- struct
- COLOR
- decode
- SwiftUI
- Apple Developer Academy
- 프로세스 스케줄링
- 앨런
- 운영체제
- Today
- Total
기어가더라도 제대로
0425 TIL (Persistance Data) 본문
본 자료에서 모든 사진 자료의 출처는 코드스쿼드에 있습니다.
Persistance Data
데이터를 저장하는 곳
저장을 한다는 이야기는 어려가지 의미가 있다.
기본적으로 컴퓨터는 휘발성이다. 메모리에 올라갔다가 비워지는 데이터를 영구적으로 옮기는 일을 Persistance 라고 한다.
회사마다 깊숙이 배워야할 부분이 도메인이 나눠져있으니 이렇게 키워드를 잡고 가면 좋겠다.
TIL
Object Graph
오브젝트들의 관계를 나타낸 그래프 혹은 상하 관계를 나타낸 그래프
JavaScript Obejct Notation
자바스크립트에선 swift에서 딕셔너리라 부르는 것을 Object라고 한다. 그런 Object 에서 문자열로 표현한 데이터 구조를 JSON 이라고한다.
Swifty JSON
- Serialization
- Array || Dictionary 로 꺼내 쓸 수 있는 형태로 변환해준다.
- 안에 데이터 타입을 원하는 타입으로 매칭이 안된다.
- JSON -> Serialization -> array, dictionary -> JSONSerialization -> JSON
- Codable
- 안에 데이터 타입을 원하는 타입으로 지정할 수 있다.
- JSON -> JSONDecoder ->
Struct -> JSONEncoder -> JSON
Binary Data and File
String, file, 여타 데이터 타입을 Data 라는 타입에 담을 수 있다.
파일은 FileManager 를 이용해 URL 로 받은 파일을 저장할 필요성이 있다.
URLComponent
- Scheme : "https://"
- Path :
- 등등이 있다. 확실한건 추후 업데이트
iOS App SandBox
배포할 때 번들에 담을 때, 경로를 복사해서 넣어줘야 된다(?)
사용자 설정 UserDefaults
Preferences/bundleld.PropertyList
"faults"를 내지 않기 위해서 기본으로 넣어주다가 점차 기본 구성품이라는 뜻을 갖게 되었다.
보안적인 문제가 있어서, KeyChain 이 등장하게 되었다.
키체인
인증서나, 중요 문서를 열기위한 키에 해당되는 단어가 "키체인"에 "키"이다.
키체인에 있는 값은 앱을 지워도 사라지지 않는다.
3rd Party Library 는 "KeyChainAccess" 라는 것이 있다.
DB
모바일은 SQLite 가 짱
- 아주 간단함
- 가벼움
- 매우 넓게 배포가 되고 있음
- 리눅스, 맥OS 가릴 것 없이 잘됨
- 오픈 소스
단점
- 고효율 동시성 X
- 파일 전체에 대해 reader/writer locks
- 거대한 데이터 셋 X
- 보통 2TB MAX
- 사용자 시스템이 없음
SQLite Library for Swift
import SQLite
// 예제는 검색해보시길...
Core Data in iOS
메모리에 올라온 데이터를 맵핑 시켜주는 역할을 한다.
Object-relational Mapping
Class === table
Attribute === Column
Instances === Row
주요 기능
- 변화 추적해서 되돌리기 기능 구현(Re-Do,UnDo)
- 객체 관계를 유지할 수 있음
- Lazy 비동기 Futures
- 메모리에 있는 것을 거의 바로(Lazy하게) 저장하기는 하는데, 간혹 안될 수도 있다.
- 속성값에 대한 자동 점검
- 스키마 마이그레이션
- 예를 들어 기존 테이블이 있는데 "사번" 컬럼은 추가하는 것을 말한다(?)
구조
NSManagedObject 하나가 구체적이고, Context는 구조(?), 막 그렇게 구체적인 것은 아니다. 보관하거나 불러오는 일을 처리하기 위해서 NSFetchRequest 이다.
앱을 코어데이터를 쓰겠다! -> AppDelegate 에서 Container 를 설정해줘서
모듈 내에 모든 부분에서 CoreData 를 사용하겠다. 로 가져가는 것이 좋다.
- CoreData 에 저장된 자료를 불러오는 객체 : FetchResultController
Persistance Store Types and Behaviors
Core Data 는 DB 가 아니다. 영구 자료 저장 전략으로 DB를 쓸 수도 있고, Binary 파일로 저장할 수도 있고, 전체를 메모리에 올렸다가 앱이 꺼지면 거둘 수도 있다.
최근에 애플이 추천하고 있는것은 iCloudKit 을 이용해 서버에도 저장이다.
DiffableDataSourceSnapshot 지원
SQLite 의 대항마 Realm
File > Swift Packages > Add Package Dependency
예제코드를 검색해보자.
사용법이 직관적이여서 좋다!
'기타' 카테고리의 다른 글
220530 TIL (0) | 2022.05.30 |
---|---|
Swift 220511.til (0) | 2022.05.11 |
todo app 개발하면서 학습해야하는 키워드 (2) | 2022.04.16 |
강제 말고 임대하세요 (0) | 2022.04.09 |
20220407. 놀라운 사실 (0) | 2022.04.07 |