Нативная разработка мобильных приложений


Мы благополучно справились с относительно простым фрагментом XML.  А есть ли менее многословные варианты XML? Списки свойств



Download 3,69 Mb.
Pdf ko'rish
bet137/228
Sana21.07.2022
Hajmi3,69 Mb.
#834838
1   ...   133   134   135   136   137   138   139   140   ...   228
Bog'liq
Нативная разработка мобильных приложений

205
Мы благополучно справились с относительно простым фрагментом XML. 
А есть ли менее многословные варианты XML?
Списки свойств
Списки свойств, или plist-файлы, – это формат на основе XML, который тра
-
диционно использовался для сериализации и десериализации данных в при
-
ложениях. Давайте посмотрим, как читать plist-файлы из файловой системы:
// Наш файл .plist в файловой системе
let plistURL = URL(...)!
guard let plistData = Data(contentsOf: plistURL) else { return }
let object = PropertyListDecoder().decode(Author.self, from: plistData)
Это выглядит очень похоже на пример декодирования JSON. Обратите вни
-
мание на использование 
PropertyListDecoder
, напоминающего своей функцио-
нальностью 
JSONDecoder
, но обрабатывающего данные в формате plist, а не 
JSON.
Запись данных в plist-файл тоже напоминает пример с форматом JSON:
let author = Author(name: "Mike")
let data = try? PropertyListEncoder().encode(author)
data?.write(to: ...) // сохранить файл plist на устройстве
Этот код запишет данные в формате XML в файл plist. Однако существуют 
дополнительные варианты экспорта файлов plist. Файлы этого типа можно 
экспортировать в форматы: XML, двоичное представление и Open Step.
Вот пример экспортирования файла plist в двоичный формат:
let author = Author(name: "Mike")
let encoder = PropertyListEncoder()
encoder.outputFormat = .binary // выбрать формат выходных данных
let data = try? encoder.encode(author)
data?.write(to: ...) // сохранить файл plist на устройстве
Дополнительные замечания для iOS
Волшебство протокола 
Codable
, как оказывается, обусловлено некоторыми дей
-
ствиями компилятора, на которые, как оказывается, можно влиять. Например, 
ниже показано, как можно использовать другое имя для свойства в JSON, от
-
личное от объявленного в структуре 
Author
:
struct Author: Codable {
let name: String
private enum CodingKeys: String, CodingKey {
case name = "something"
}
}
let author = Author(name: "Mike")
let rawData = try? JSONEncoder().encode(author)


206

Сериализация и транспорты
В этом примере свойство 
name
в выходном фрагменте JSON изменяется на 
something
. Если запустить этот код, он выведет следующий фрагмент JSON:
{ "something" : "Mike" }
Кроме того, есть возможность определить свои реализации методов 
encode(to:)
и 
init(from:)
для протоколов 
Encodable
и 
Decodable
, выполняющие се
-
риализацию и десериализацию.

Download 3,69 Mb.

Do'stlaringiz bilan baham:
1   ...   133   134   135   136   137   138   139   140   ...   228




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish