๐ŸŒฑ SeSAC

[SeSAC] 220824 TIL

taeeekki 2022. 8. 29. 18:59

Document Directory

๊ฐ๊ฐ์˜ ์•ฑ์€ ๋ชจ๋‘ Sandboxํ™” ๋˜์–ด ์žˆ๋‹ค. ๊ฐ์ž ๊ณ ์œ ์˜ ๋ฐ”์šด๋”๋ฆฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋Š” ๋œป์ด๋‹ค. ๋ฐ”์šด๋”๋ฆฌ๋Š” Container๋“ค๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋Š”๋ฐ ํฌ๊ฒŒ Bundle Container, Data Container, iCloud Container๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ๊ทธ ์ค‘์—์„œ Documents ๋””๋ ‰ํ„ฐ๋ฆฌ๋Š” Data Container ์•ˆ์— ์œ„์น˜ํ•ด ์žˆ๋‹ค.

Documents ๋””๋ ‰ํ„ฐ๋ฆฌ๋Š” ์‚ญ์ œ, ๋ณ€๊ฒฝ๋˜์–ด๋„ ๋ฌด๋ฐฉํ•˜๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค๋ฃจ๋Š” ์ปจํ…์ธ ์™€ ๊ด€๋ จ๋œ ํŒŒ์ผ๋“ค๋งŒ ์ €์žฅํ•œ๋‹ค. Realm์€ ๊ธฐ๋ณธ์ ์œผ๋กœ Document ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

 


FileManager

์œ„์—์„œ ๊ฐ์ž ๊ณ ์œ ํ•œ ๊ณต๊ฐ„์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ, ๊ทธ ๊ณ ์œ ํ•œ ๊ณต๊ฐ„์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด FileManager๋ผ๋Š” ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜๋Š” Document ๋””๋ ‰ํ„ฐ๋ฆฌ ์•„๋ž˜์— ์ด๋ฏธ์ง€๋ฅผ ์ €์žฅํ•˜๊ณ  ์ œ๊ฑฐํ•˜๋Š” ์ฝ”๋“œ ์˜ˆ์‹œ์ด๋‹ค.

/// ์ด๋ฏธ์ง€ ์ œ๊ฑฐ
func removeImageFromDocument(fileName: String) {
    guard let documentDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else { return }
    let fileURL = documentDirectory.appendingPathComponent(fileName)
    
    do {
        try FileManager.default.removeItem(at: fileURL)
        
    } catch let error {
        Logger.log(error, .error, "error occured")
    }
}

/// ์ด๋ฏธ์ง€ ์ €์žฅ
public func saveImageToDocument(fileName: String, image: UIImage) {
    guard let documentDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else { return }
    let fileURL = documentDirectory.appendingPathComponent(fileName)
    guard let data = image.jpegData(compressionQuality: 0.5) else { return }
    
    do {
        try data.write(to: fileURL)
    } catch let error {
        print("file save err", error)
    }
}

 


 

๋ฐฑ์—…, ๋ณต๊ตฌ

๊ธฐ๋ณธ์ ์œผ๋กœ ํ”„๋ผ์ด๋น—ํ•œ ์ •๋ณด์ด๊ฑฐ๋‚˜, ๋ฐ์ดํ„ฐ์˜ ์‚ฌ์ด์ฆˆ๊ฐ€ ํฌ์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋Š” ๋กœ์ปฌ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉด ์ข‹์€ ๊ฒƒ ๊ฐ™๋‹ค. ๊ทธ ์™ธ์— ํŠน์ง•์„ ์‚ดํŽด๋ณด๋ฉด

  • ์‚ฌ์šฉ์ž๊ฐ„ ๋ฐ์ดํ„ฐ ๊ณต์œ  ๋ถˆํ•„์š”
  • ๋ณ„๋„ ์„œ๋ฒ„์— ๋น„์šฉ์„ ์ง€๊ธ‰ํ•˜๋ฉด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ
  • ์‚ฌ์šฉ์ž๊ฐ€ ํ•„์š”๋กœ ํ•  ๋•Œ ๋ฐ์ดํ„ฐ๋ฅผ ์™ธ๋ถ€๋กœ ๋ฐฑ์—…ํ•˜๋„๋ก ํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ

๋ฐ์ดํ„ฐ๋Š” ์•ฑ์ด ์‚ญ์ œ๋˜๋Š” ์ˆœ๊ฐ„, ๋ชจ๋‘ ์ œ๊ฑฐ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฑ์—…, ๋ณต๊ตฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

์™ธ๋ถ€ ์ €์žฅ์†Œ

  1. iCloud
  2. Google Drive, Dropbox ๋“ฑ์˜ ์จ๋“œ ํŒŒํ‹ฐ ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค
  3. ํŒŒ์ผ ์•ฑ(๊ธฐ๋ณธ ์•ฑ) + ShareActivity์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ํฐ ์žฅ์ ์ด ์žˆ์Œ

๋ฐ์ดํ„ฐ ์ „๋‹ฌ (Protocol/Delegate)

ํ”„๋กœํ† ์ฝœ์„ ์ด์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ƒ๊ฐ๋ณด๋‹ค ์ž์ฃผ ์‚ฌ์šฉํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.