Ios 将可编码结构编码为JSON后如何存储数据

Ios 将可编码结构编码为JSON后如何存储数据,ios,arrays,json,swift,xcode,Ios,Arrays,Json,Swift,Xcode,我有一个自定义植物对象数组。植物是可编码的。我使用JSONEncoder.encode获取用JSON编码的数组,但是如何存储这个JSON,以便在应用程序关闭后保存它?我记得使用NSCoder,我可以在应用程序关闭时对其进行编码,并使用所需的便利初始化?来解码,但我看不到类似的选项。这是我的独生子女课程,我试图拯救[植物] 试一试 jsonData.writeto:url帮助程序扩展 import Foundation public extension FileManager { // Retu

我有一个自定义植物对象数组。植物是可编码的。我使用JSONEncoder.encode获取用JSON编码的数组,但是如何存储这个JSON,以便在应用程序关闭后保存它?我记得使用NSCoder,我可以在应用程序关闭时对其进行编码,并使用所需的便利初始化?来解码,但我看不到类似的选项。这是我的独生子女课程,我试图拯救[植物]

试一试 jsonData.writeto:url

帮助程序扩展

import Foundation

public extension FileManager {
// Returns a URL that points to the document folder of this project.
    static var documentDirectoryURL: URL {
        return try! FileManager.default.url(
            for: .documentDirectory,
            in: .userDomainMask,
            appropriateFor: nil,
            create: false
        )
    }
}
创建将包含数据文件的文件夹

let documentSubdirectoryURL = URL(
    fileURLWithPath: "MyFolder",
    relativeTo: FileManager.documentDirectoryURL
)
try? FileManager.default.createDirectory(
    at: documentSubdirectoryURL,
    withIntermediateDirectories: false
)
拯救-

do {
     let yourURL = URL(fileURLWithPath: "yourFileName", relativeTo: FileManager.documentDirectoryURL.appendingPathComponent("MyFolder")).appendingPathExtension("swift")
    ///ENCODE...
    try jsonData.write(to: yourURL)
}
解码-

do {
    let yourURL = URL(fileURLWithPath: "yourFileName", relativeTo: FileManager.documentDirectoryURL.appendingPathComponent("MyFolder")).appendingPathExtension("swift")
    let jsonDecoder = JSONDecoder()
    let data = try Data.init(contentsOf: yourURL)
    let value = try jsonDecoder.decode([Plant].self, from: data)
  }
如果要检查包含数据的文件,请导航到

FileManager.documentDirectoryURL

是否要存储植物对象数组?您可以为sameI使用UserDefaults。如果您在游乐场中检查了此项,在这里打开FileManager.documentDirectoryURL返回的url时,我可以使用存储的数据检查该文件。
FileManager.documentDirectoryURL