Swift Academy · บทเรียน

ไดเรกทอรีแซนด์บ็อกซ์ของแอป

ใช้ Documents, Caches และตำแหน่งชั่วคราว

บทเรียน 4 จาก 413 ขั้นตอน

ไดเรกทอรีแซนด์บ็อกซ์ของแอป เป็นบทเรียน Swift Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Swift Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน

ไดเรกทอรีแซนด์บ็อกซ์ของ App

App ทำงานอยู่ในแซนด์บ็อกซ์ จึงเขียนข้อมูลได้เฉพาะภายในคอนเทนเนอร์ของตนเองเท่านั้น ระบบมีโฟลเดอร์มาตรฐานสำหรับเอกสาร แคช และไฟล์ชั่วคราว

ค้นหาไดเรกทอรีเอกสาร

FileManager.urls(for:in:) คืนค่าที่อยู่ URL สำหรับไดเรกทอรีที่รู้จัก โดย .documentDirectory ใช้เก็บข้อมูลผู้ใช้ที่ควรสำรองข้อมูล

import Foundation

let fm = FileManager.default
let docs = fm.urls(for: .documentDirectory, in: .userDomainMask).first!
print("Documents path ends correctly: \(docs.lastPathComponent)")

สร้างที่อยู่ URL ของไฟล์

ผนวกชื่อไฟล์เข้ากับที่อยู่ URL ของไดเรกทอรีเพื่อให้ได้เส้นทางแบบเต็มสำหรับไฟล์ของคุณ

import Foundation

let fm = FileManager.default
let docs = fm.urls(for: .documentDirectory, in: .userDomainMask).first!
let file = docs.appendingPathComponent("profile.json")
print(file.lastPathComponent)

ไดเรกทอรีแคช

.cachesDirectory ใช้เก็บข้อมูลที่สร้างใหม่ได้ ระบบอาจล้างข้อมูลในไดเรกทอรีนี้เมื่อพื้นที่ดิสก์ใกล้เต็ม ดังนั้นอย่าเก็บข้อมูลที่ไม่สามารถทดแทนได้ไว้ที่นี่

import Foundation

let fm = FileManager.default
let caches = fm.urls(for: .cachesDirectory, in: .userDomainMask).first!
print("Caches dir name: \(caches.lastPathComponent)")

ไดเรกทอรีชั่วคราว

FileManager.default.temporaryDirectory ให้พื้นที่ชั่วคราวสำหรับไฟล์อายุสั้นที่คุณควรลบด้วยตนเอง

import Foundation

let tmp = FileManager.default.temporaryDirectory
let scratch = tmp.appendingPathComponent("work.tmp")
print("Temp file path ready: \(scratch.lastPathComponent)")

เอกสาร แคช และไฟล์ชั่วคราว

ใช้เอกสารสำหรับข้อมูลที่ผู้ใช้สร้างขึ้นและต้องสำรองข้อมูล ใช้แคชสำหรับข้อมูลที่สร้างใหม่ได้ และใช้tmpสำหรับไฟล์ที่ไม่จำเป็นต้องเก็บไว้

import Foundation

// Choose the right folder for the data's lifetime.
print("Documents = backed up, Caches = purgeable, tmp = transient")

การสนับสนุนแอปพลิเคชัน

.applicationSupportDirectory ใช้เก็บข้อมูลที่ app จัดการและผู้ใช้ไม่ได้เข้าถึงโดยตรง เช่น ฐานข้อมูล โดยทั่วไปคุณจะสร้างไดเรกทอรีนี้เมื่อเปิดใช้งานครั้งแรก

import Foundation

let fm = FileManager.default
let support = fm.urls(for: .applicationSupportDirectory, in: .userDomainMask).first!
try? fm.createDirectory(at: support, withIntermediateDirectories: true)
print("Ensured Application Support exists")

บันทึกลงในเอกสาร

รวมที่อยู่ URL ของไดเรกทอรีเข้ากับการเรียกเขียนข้อมูล เพื่อเก็บข้อมูลผู้ใช้ไว้อย่างถาวรภายในแซนด์บ็อกซ์

import Foundation

let fm = FileManager.default
let docs = fm.urls(for: .documentDirectory, in: .userDomainMask).first!
let url = docs.appendingPathComponent("note.txt")
try? "hello".write(to: url, atomically: true, encoding: .utf8)
print("Saved into Documents")

อ่านข้อมูลกลับ

อ่านไฟล์ในแซนด์บ็อกซ์ด้วยวิธีเดียวกับที่อยู่ URL ของไฟล์ทั่วไป เพราะเส้นทางนั้นใช้งานได้อย่างสมบูรณ์ภายในคอนเทนเนอร์

import Foundation

let fm = FileManager.default
let docs = fm.urls(for: .documentDirectory, in: .userDomainMask).first!
let url = docs.appendingPathComponent("note.txt")
if let text = try? String(contentsOf: url, encoding: .utf8) {
    print(text)
}

ยกเว้นจากการสำรองข้อมูล

ตั้งค่าทรัพยากร isExcludedFromBackup ให้กับไฟล์ขนาดใหญ่ที่สร้างใหม่ได้ เพื่อไม่ให้ไฟล์เหล่านี้ทำให้ข้อมูลสำรองบน iCloud มีขนาดใหญ่เกินไป

import Foundation

var url = URL(fileURLWithPath: "/tmp/big.cache")
var values = URLResourceValues()
values.isExcludedFromBackup = true
try? url.setResourceValues(values)
print("Marked excluded from backup")

เหตุผลที่ต้องใช้แซนด์บ็อกซ์

เส้นทางในแซนด์บ็อกซ์แตกต่างกันไปตามการติดตั้งและอุปกรณ์แต่ละเครื่อง ดังนั้นอย่ากำหนดเส้นทางตายตัว ให้ค้นหาไดเรกทอรีขณะทำงานด้วย FileManager เสมอ

import Foundation

// Never hardcode /var/mobile/... — resolve at runtime instead.
let fm = FileManager.default
let docs = fm.urls(for: .documentDirectory, in: .userDomainMask).first!
print("Resolved Documents dynamically: \(!docs.path.isEmpty)")

ตรวจสอบความเข้าใจ

ไดเรกทอรีใดควรใช้เก็บข้อมูลผู้ใช้ที่ต้องสำรองข้อมูล

สรุปทบทวน

App จัดเก็บไฟล์ในโฟลเดอร์แซนด์บ็อกซ์ที่ค้นหาผ่าน FileManager.urls(for:in:) ได้แก่ เอกสารสำหรับข้อมูลผู้ใช้ที่สำรองข้อมูล แคชสำหรับข้อมูลที่สร้างใหม่ได้ tmpสำหรับไฟล์ชั่วคราว และการสนับสนุนแอปพลิเคชัน ให้ค้นหาเส้นทางขณะทำงาน อย่ากำหนดเส้นทางตายตัว บทเรียนการอ่านเขียนไฟล์จบลงเพียงเท่านี้

เริ่มต้นได้ฟรี

เรียนรู้ Swift ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
122
บทเรียน
409

คำถามที่พบบ่อย

บทเรียน “ไดเรกทอรีแซนด์บ็อกซ์ของแอป” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ไดเรกทอรีแซนด์บ็อกซ์ของแอป” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Swift Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ไดเรกทอรีแซนด์บ็อกซ์ของแอป”

ใช้ Documents, Caches และตำแหน่งชั่วคราว คุณปฏิบัติ Swift Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Swift Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Swift Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “ไดเรกทอรีแซนด์บ็อกซ์ของแอป” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Swift Academy นี้ได้ไหม

ได้ บทเรียน Swift Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. URL และเส้นทางไฟล์
  2. การอ่านและเขียนข้อมูล
  3. การจัดการไดเรกทอรี
  4. ไดเรกทอรีแซนด์บ็อกซ์ของแอป
← กลับไปที่ Swift Academy