PLIST (Property List) — это специальный формат файлов, используемый Apple для хранения структурированных данных. Это XML-файл с определенной структурой, который iOS/macOS могут легко читать и записывать.
// Пример создания пути к plist-файлу
let plistURL = Bundle.main.url(forResource: "Config", withExtension: "plist")!
Конфигурация приложения:
Хранение данных:
Системные файлы:
PLIST поддерживает следующие типы данных:
Тип данных | Пример в коде | Примечание |
---|---|---|
String | "Hello World" | UTF-8 строка |
Number | 42, 3.14 | Integer или Double |
Boolean | true/false | Логическое значение |
Date | Дата в ISO формате | |
Data | ... | Бинарные данные в Base64 |
Array | [1, 2, 3] | Упорядоченный список |
Dictionary | {"key": "value"} | Неупорядоченные пары ключ-значение |
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>AppName</key>
<string>MyAwesomeApp</string>
<key>ApiConfig</key>
<dict>
<key>BaseURL</key>
<string>https://api.example.com</string>
<key>Timeout</key>
<integer>30</integer>
</dict>
<key>Features</key>
<array>
<string>NewUI</string>
<string>DarkMode</string>
</array>
</dict>
</plist>
guard let url = Bundle.main.url(forResource: "Config", withExtension: "plist"),
let data = try? Data(contentsOf: url),
let plist = try? PropertyListSerialization.propertyList(from: data, options: [], format: nil) as? [String: Any] else {
fatalError("Couldn't load plist file")
}
print(plist["AppName"] as? String ?? "")
let config: [String: Any] = ["Token": "abc123", "Expires": Date()]
let url = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0].appendingPathComponent("user.plist")
do {
let data = try PropertyListSerialization.data(fromPropertyList: config, format: .xml, options: 0)
try data.write(to: url)
} catch {
print("Error saving plist: \(error)")
}
Info.plist:
Безопасность:
Производительность:
Локализация:
PLIST — это "рабочая лошадка" для хранения простых структурированных данных в iOS-экосистеме.