File Manager
์๋๋ฐ์ค๋ฅผ ํตํด ์ฑ๋ง๋ค ๋ณ๋์ ํ์ผ์ ์์ฑํด ๊ณต์ ๋์ง ์๋๋ก ํ๊ณ , ์ธ๋ถ๋ก๋ถํฐ์ ์ ๊ทผ์๋ ๋ณดํธ๋๋ ์์ญ์ผ๋ก ์์คํ ์ด ๋ถ์ ์ ์ผ๋ก ์กฐ์๋๋ ๊ฒ์ ๋ง๊ธฐ ์ํด์๋ค.
ํ์ผ ๋งค๋์ ๋ฅผ ํตํด์ ํ์ผ์์คํ
๊ณผ ์ํธ์์ฉ์ ํ ์ ์๋ค.
ํ์ผ๊ณผ ๋๋ ํ ๋ฆฌ๋ฅผ ์ฐพ๊ณ , ๋ง๋ค๊ณ , ๋ณต์ฌํ๊ณ , ์ด๋ํ๋ ๋ฐ ์ฌ์ฉํ๋ค.
ํ์ผ ๋งค๋์ ๋ฅผ ํตํด ์ฃผ๋ก ์ ๊ทผํด ์ฌ์ฉํ ๋๋ ํ ๋ฆฌ๋ค์ ๋ํด ์ดํด๋ณด๋ฉด์ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ ์ฌ์ฉํ๋ฉด ์ข์์ง ์์๋ณด์.
์ ๋ฆฌ๋ฅผ ํด๋ณด๋ฉด
- file system๊ณผ ์ํธ ์์ฉ ๊ฐ๋ฅํ ์ธํฐํ์ด์ค
- file๊ณผ directory๋ฅผ locate, create, copy, move ํ ์ ์์ต๋๋ค.
- file system ๋ด ์ ์ฅ์ ๊ฒฝ๋ก(path) ์ ๋ณด๋ฅผ ํจ์จ์ ์ผ๋ก ํํํ๋ NSURL์ ์ฌ์ฉํ์ฌ ์์น๋ฅผ ์ง์
- iCloud ๋ด ์ ์ฅ๋์ด ์๋ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ ์ ์๋ ๋ฉ์๋ ์กด์ฌ
- cloud storage ๋ก tag๋ file ๊ณผ directory ๋ค์ iCloud์ ๋๊ธฐํ ๋๋ค.
- thread-safe ํ์ง๋ง delegate๋ฅผ ํตํด notification์ ์์ ์ FileManager ๊ฐ์ฒด์ ๊ณ ์ ํ ์ธ์คํด์ค๊ฐ ํ์
FileManager๋ UserDefaults์๋ ์กฐ๊ธ ๋ค๋ฅด๊ฒ file-system ๊ธฐ๋ฐ์ผ๋ก ์ ์ฅ๋๋ค๊ณ ๋ณผ ์ ์์ต๋๋ค!
์ฆ, ์ ์ฅํ๊ณ ์ ํ๋ ๋ฐ์ดํฐ๊ฐ file ํํ๋ก, ๊ทธ๋ฆฌ๊ณ directory ๋ณ๋ก ๊ด๋ฆฌ๊ฐ ๋ ์ ์๋ค๋ ๊ฒ์
๋๋ค!
๋์ผํ ํํ์ ์ฌ๋ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋๋, ๋ฐ์ดํฐ ํํ๋ณ๋ก ๊ฐ๊ธฐ ์ ์ฅํ ๋๋ file ํ์์ผ๋ก ์ ์ฅํ ์ ์๊ฒ ์ฃ ?
๊ฐ๋จํ๊ฒ๋ .json ํ์ผ๋ก ์ ์ฅํ์ฌ JSONEncoder, JSONDecoder๋ฅผ ํตํด read/write๊ฐ ๊ฐ๋ฅํ๋ต๋๋ค!
------------
CoreData
https://developer.apple.com/documentation/coredata/
์ ๋ฆฌ๋ฅผ ํด๋ณด๋ฉด
- ๋จ์ผ ๊ธฐ๊ธฐ, ๋๋ CloudKit์ ์ฌ์ฉํ ๋ค์ค์ฅ์น๊ฐ ๋ฐ์ดํฐ ๋๊ธฐํ๋ฅผ ์ํ ํ๋ ์์ํฌ
- ๋จ์ผ ๊ธฐ๊ธฐ ๋ด ์คํ๋ผ์ธ ์ฌ์ฉ์ ์ํด ์๊ตฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ, ์์๋ฐ์ดํฐ cache, ์คํ ์ทจ์ ๋ฐ ๋ค์ ์คํ ๊ธฐ๋ฅ ์ ๊ณต
- CloudKit์ ์ฌ์ฉํ์ฌ ๋ค์ค์ฅ์น๊ฐ์ ๋ฐ์ดํฐ ๋๊ธฐํ
- CoreData์ Model editor๋ฅผ ํตํด ๋ฐ์ดํฐ type๊ณผ relationship์ ํตํด class๋ฅผ ์ ์
- CoreData๊ฐ runtime์ ๊ฐ์ฒด ์ธ์คํด์ค๋ฅผ ๊ด๋ฆฌํ์ฌ ์ฌ์ฉ
- CoreData๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ง์ ๊ด๋ฆฌํ์ง ์๊ณ ๋ Swift๋ฅผ ํตํด ๊ฐ์ฒด๋ฅผ ์ ์ฅ์์ ๋งคํ
- CoreData์ undo manager๋ฅผ ํตํด ๋ณ๊ฒฝ์ฌํญ์ ์ถ์ฒํ์ฌ roll back ๊ฐ๋ฅ
- Background์์ ์์ ์ํ์ด ๊ฐ๋ฅ
- table ๋ฐ collectionView์ ๋ํ ๋ฐ์ดํฐ์์ค๋ฅผ ์ ๊ณตํ์ฌ view์ ๋ฐ์ดํฐ๊ฐ์ ๊ณต๊ธฐํ๋ฅผ ์ ์งํ๋๋ฐ ๋์ ์ ๊ณต
- CoreData๋ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ฅผ ๋ฒ์ ๋ณ ๊ด๋ฆฌ, ๋ง์ด๊ทธ๋ ์ด์ ๊ธฐ๋ฅ ์ ๊ณต
------------
KeyChain
keychain ?
ํค์ฒด์ธ์ ๋น๋ฐ๋ฒํธ๋ ์ ์ฉ์นด๋ ์ ๋ณด, ์ธ์ฆ์ ๋ฑ๊ณผ ๊ฐ์ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๋ค.
๋ฐ์ดํฐ๋ ์ํธํ๋์ด ์ ์ฅ๋๋ฉฐ, ์ํธํํ ๋ฐ์ดํฐ์ ์ฝ๊ฒ ์ ๊ทผํ ์ ์๋๋ก ๋์์ค๋ค.
[์์น]
keychain์ด ์ ๊ธด ์ํ์์๋ item ์ ๊ทผ ๋ถ๊ฐ, ๋ณตํธํ ๋ถ๊ฐ
keychain์ด ํ๋ฆฐ ์ํ์์๋ ํด๋น item์ ์์ฑํ๊ณ ์ ์ฅํ ์ดํ๋ฆฌ์ผ์ด์ ์์๋ง ์ ๊ทผ ๊ฐ๋ฅ.
๊ฐ์ ๊ฐ๋ฐ์๊ฐ ๊ฐ๋ฐํ ์ฌ๋ฌ์ฑ์์ ํค์ฒด์ธ ์ ๋ณด ๊ณต์
// MARK: [ํค ์ฒด์ธ ์ค๋ช ]
/*
1. Keychain ์ ๋๋ฐ์ด์ค ์์ ์ํธํ๋ ๋ฐ์ดํฐ ์ ์ฅ ๊ณต๊ฐ์ ๋๋ค
2. Keychain ์ ๋ณด์ ๊ธฐ๋ฅ์ด ๋ฐ์ด๋ ์ฌ์ฉ์ ์ ๋ณด ๋ฐ ๊ฒฐ์ ์ ๋ณด ๋ฑ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ์ ์ฅํ ์ ์์ต๋๋ค
3. Keychain ์ ์ฑ ์ข ๋ฃ ๋ฐ ์ฑ ์ญ์ ํ ์ฌ์ค์น๋ฅผ ์งํํด๋ ๋์ผํ๊ฒ ์ ์ฅ๋ ๊ฐ์ ์ฌ์ฉํ ์ ์์ต๋๋ค
- ์๊ตฌ์ ์ธ ๋ฐ์ดํฐ
- ์ฌ์ฉ์๊ฐ ์ญ์ ํ์ง ์๋ ์ด์ ์ ์ง
- Keychain ์ ์ฌ์ฉ์๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๊ฑฐ๋, ํด๋ํฐ ๊ณต์ฅ ์ด๊ธฐํ๋ฅผ ์งํ ์ ์ญ์ ๋ฉ๋๋ค
4. ์ค์ ํจํค์ง : import Security
------------------
realm
framework ๋ฒ์ ํ์ธ
info.plist ๋ด Bundle version string (short) ํ์ธ
api site
static realm.framework ์ค์นํ๋ ๋ฐฉ๋ฒ
https://www.mongodb.com/docs/realm/sdk/swift/install/
zip ๋ค์ด site:
https://github.com/realm/realm-swift/releases.