ไดเรกทอรีแซนด์บ็อกซ์ของแอป
ใช้ Documents, Caches และตำแหน่งชั่วคราว
ไดเรกทอรีแซนด์บ็อกซ์ของแอป เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- URL และเส้นทางไฟล์
- การอ่านและเขียนข้อมูล
- การจัดการไดเรกทอรี
- ไดเรกทอรีแซนด์บ็อกซ์ของแอป