짧은인사, 하루의 사건, 나의 행동
ToDo
✅ 운동
✅ 취지직...준비
✅ 공부
글을 쓴지 조금 지났군요 하하 ^_^ 갑작스레 잡힌 면접을 준비하느라 공부는 살짝 미뤄뒀습니다.
솔루션 회사에 면접을 보고왔습니다만,, 여러 느낌은 제껴두고 면접관님에게 감사한 느낌이 듭니다.
물론 합불을 떠나서 개발자로써 좋은 조언들을 해주시고 분위기도 편안하게 해주셔서 너무 감사드려요 ^_^/
하지만 저는 손에 땀이 너무 많이나더군요 하하.. 긴장했는지 발을 살짝 떨었는데 들킨거같은 느낌ㅋ
하튼~ 취준을 할때마다 느끼는 거지만 생각을 하면 할수록 머리가 복잡해집니다..~~
그래서 이제부터 스터디 카페에서 공부를 하려구요..ㅎ
타자를 좀 우다다다 치고싶지만 다른 공부하시는 분들을 위해 살살 누르는중..ㅋ
마저못한 CoreData와 데이터를 저장하는 방법들을 후다닥 알아봅시다~
배운점
UserDefaults
- 정보를 저장하고 검색하는 가장 일반적이고 편안한 방법
- 사용자 기본설정인 작은 정보 (ex. dark or ligh mode, volume크기(소리) 등) 를 저장할때 사용.
- 일반적으로 앱에 설정 화면이 있는 경우 UserDefaults가 적합
- 이는 Key-Value 로 property plist 또는 plist로서 disk에 저장된다.
- AppData > Library > Preferences 안에 plist 파일이 있는데 이게 표준 UserDefaults의 database 파일
Keychain
- 이는 disk에 있는 특수한 파일
- 암호화하고 보안을 유지해야 하는 작은정보 (ex. 암호, 자격증명, 토큰 등) 를 저장할때 사용
- 모든 것이 Data로 저장되어야 함. 따라서 해당 유형으로 직렬화 할 수 있는 object와 value만 전달해야함.
- 참고로 Keychain Sharing 을 활성화하려면 keychain에 저장한 값을 같은 팀에서 개발한 다른 앱과 공유 가능.
- ( 실제로 앱에서 키체인을 사용하려 한다면 좋은 라이브러리를 검색하여 그 라이브러리가 대신 작업을 해야 시간과 스트레스에 도움이 된다합니다 ^_^
- KeychainAccess (6.2K stars)
- Valet from Square (3.6K stars)
- Locksmith (2.9K stars)
File Sytem
- 저장해야하는 항목이 UserDefaults, Keychain에 해당하지 않는 경우 파일시스템 사용.
- 컴퓨터의 파일 시스템과 똑같이 작동하며, 경로와 URL을 사용하여 디스크의 리소스를 식별.
- 암호화 해야 하지만 키체인에 저장할 수 없는 대용량 파일의 경우 파일에 쓸 때 적절한 암호화 옵션을 사용하는 것이 좋음.
- 사용자의 진행 상황을 저장하기 위한 파일을 Library 폴더에 만들 수 있음.
- 앱의 파일 시스템은 샌드박스 처리됩니다. (링꾸)
언제사용?
- 웹에서 다운로드 한 이미지를 저장해서, 로딩 시간을 단축할 때는 Library/Caches 폴더 사용
- 앱에서 사용자가 콘텐츠를 만들 수 있도록 허용하는 경우 Document 폴더 사용 (ex. 사용자가 내보낼 수 있는 CSV 파일의 위치)
다만 동영상과 사진을 편집하는 경우 CameraRoll이 더 나은 선택.
sqlite
- 데이터를 저장하는 장소 이상으로 내부 데이터베이스의 사실상 표준.
- Library 폴더는 일반적으로 SQLite 데이터베이스를 저장하기에 가장 좋은 장소.
- 잘 구조화된 수많은 데이터가 있을때 사용하기 좋음
- 스토리지 기능 외에도 SQL 데이터베이스가 있으면 효율적인 검색이 가능하고 복잡한 쿼리를 작성하여 흥미로운 인사이트를 얻을 수 있음
CoreData
- Core Data는 iOS가 제공하는 ORM (Objected - Relational Mapping) 프레임 워크
- 데이터를 저장하고 관리하기 위한 프레임워크 즉 데이터를 조작하는 방법
- CoreData는 해당 기기에 데이터를 저장하므로 오프라인에서도 동작 가능하며,icloud에 데이터 공유 가능.
- SQL을 쓸 일 없이 오롯이 object - oriented 방식으로만 데이터를 다룰 수 있음. 데이터는 Object로 표현되며, 이러한 Object가 관계를 형성하어 Object Graphs를 이루고 이를 관리하는 프레임 워크가 바로 Core Data
- CoreData도 내부적으로는 SQL을 이용하여 데이터를 저장하지만, 개발자는 Xcode에 내장된 데이터 모델 에디터를 통해 데이터의 타입, 관계(Graphical Relationship)를 지정하고 코드로 관련 클래스를 수정할 수 있음.
- 우리는 Context에 의해 관리되는 DataModel을 만듦. 그리고 Context는 데이터 저장 및 검색을 담당하는 StorePresistor와 상호작용함.
- 여러 엔티티와 관계가 있는 복잡한 오브젝트 모델을 추적해야 할 때 좋음
- SQLite보다 더 빠르게 기록을 가져올 수 있지만, 더 많은 메모리와 저장 공간을 사용.
앞으로의 계획선언
CoreData부분은 더욱 알아봐야 할 것 같습니다. (persistentcontainer, context)등 아직 이해가 덜된것이 많군요
https://betterprogramming.pub/5-ways-to-store-user-data-in-your-ios-app-595d61c89667
5 Ways To Store User Data in Your iOS App
Choose the right storage based on your requirements
betterprogramming.pub
https://80000coding.oopy.io/72aca705-64d9-4be6-aaf5-34c1def4223a
'TIL' 카테고리의 다른 글
TIL_20241009 Rx를 곁들인.. (0) | 2024.10.09 |
---|---|
TIL_20240119 iOS)CoreData로 부숴지기.. CRUD (0) | 2024.01.19 |
TIL_20240110 Swift_AppSandbox, NSCoder (0) | 2024.01.10 |
TIL_20240109 Swift_SingletonPattern (0) | 2024.01.09 |
TIL_20240103 (0) | 2024.01.05 |