今天要展示兩種方法,您可以使用兩種方法使用Swift將JSON數據/字符串寫入文件。
保存JSON字符串與保存任何其他類型的字符串相同。由於Swift會將其視為String對象,因此我們可以使用write(to:)內置的方法String。
我們要做的第一件事是創建一個模擬程序jsonString,我們將在上面的代碼以及Save JSON Data下面的部分中使用它。
有了JSON字符串後,我們需要獲取文檔目錄的路徑。我們通過使用FileManager.default.urls上面的代碼來做到這一點。URL返回數組中的第一個是我們想要的。
現在我們有了文檔目錄的url,我們需要獲取文件路徑pathWithFileName。為此,我們將文件名附加到文檔目錄路徑上。在這種情況下,我將調用文件myJsonString.json。
最後,我們需要寫入文件。String有一個稱為的內置方法write(to:)。這將允許我們寫的價值jsonString來pathWithFilename。write(to:)期望的第一個參數是pathWithFilename,接下來需要我們指定它是否應該是原子的(這與並發性有關),最後我們傳遞要使用的編碼。
如果一切正常,我們將把jsonString內容寫到文件中!
let jsonString = "{\"location\": \"the moon\"}"
if let documentDirectory = FileManager.default.urls(for: .documentDirectory,
in: .userDomainMask).first {
let pathWithFilename = documentDirectory.appendingPathComponent("myJsonString.json")
do {
try jsonString.write(to: pathWithFilename,
atomically: true,
encoding: .utf8)
} catch {
// Handle error
}
}
保存JSON數據與保存普通數據完全相同。Data有一個稱為的內置方法write。實際上,保存數據和保存字符串非常相似。
這是我們可以保存數據的方式(注意:jsonString以上部分正在使用中):
if let jsonData = jsonString.data(using: .utf8),
let documentDirectory = FileManager.default.urls(for: .documentDirectory,
in: .userDomainMask).first {
let pathWithFileName = documentDirectory.appendingPathComponent("myJsonData")
do {
try jsonData.write(to: pathWithFileName)
} catch {
// handle error
}
}
在第一行中,我們將JSON字符串轉換jsonString為數據。String有一個內置方法,可讓我們將其轉換為Data。
接下來,我們獲得文檔目錄。為此,我們使用 FileManager.default.urls。這將返回一個數組,我們只需要數組中的第一項。
現在我們有了文檔目錄,我們將創建一個名為的常量pathWithFileName。我們將使用此文件名將文件名附加到documentDirectory。我已經叫這個文件了myJsonData。
最後,我們可以保存文件。Data有一個稱為的內置方法write(to:)。此方法以a URL作為參數。我們將傳入pathWithFileNameURL作為URL,因為它代表了我們要寫入的文件的完整路徑。
現在,您應該能夠將JSON數據寫入文件