读取并更新到主应用程序包中的 JSON 文件

Posted

技术标签:

【中文标题】读取并更新到主应用程序包中的 JSON 文件【英文标题】:Read and Update into JSON file in main app bundle 【发布时间】:2019-09-29 11:08:07 【问题描述】:

我有一个 JSON 文件在本地复制到 xcode 中,我可以通过主包读取它。 但是我在更新这个 JSON 文件时遇到了问题,因为每次我写入一个新的 JSON 文件时,都会在 app 文件夹中创建。

这里是示例 JSON 文件

[

    "id": "5c8a80f52dfee238898d64cf",
    "firstName": "Phoebe",
    "lastName": "Monroe",
    "email": "phoebemonroe@furnafix.com",
    "phone": "(903) 553-3410"
,

    "id": "5c8a80f575270ddb54a18f86",
    "firstName": "Lidia",
    "lastName": "Wilkins",
    "email": "lidiawilkins@furnafix.com",
    "phone": "(997) 482-3866"

]

这是我更新 JSON 文件的代码

  let mainUrl = Bundle.main.url(forResource: "data", withExtension: ".json")!

    let json = JSON(contact)
    let hello = json.arrayObject
    let str = hello?.description
    let data = str!.data(using: String.Encoding.utf8)!
    do
    try data.write(to: mainUrl, options: [])
         catch 
                print(error)


【问题讨论】:

How to access file included in app bundle in Swift?的可能重复 【参考方案1】:

您不能再次将文件保存在主包中,因为它是只读的,您需要将其复制到可以读取/写入的文档/库文件夹中


class ViewController: UIViewController 

    override func viewDidLoad() 
        super.viewDidLoad()
        // Do any additional setup after loading the view.

        let from = Bundle.main.url(forResource: "data", withExtension: "json")!

        let to = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!.appendingPathComponent("result.json")

        do 

            try FileManager.default.copyItem(at: from, to: to)

            print(try FileManager.default.contents(atPath: to.path))

            let wer = Data("rerree".utf8 )

            try wer.write(to: to)

            print(try FileManager.default.contents(atPath: to.path))

        
        catch 

            print(error)
        

    


【讨论】:

我能知道怎么做吗?因为我找不到这方面的任何指南

以上是关于读取并更新到主应用程序包中的 JSON 文件的主要内容,如果未能解决你的问题,请参考以下文章

在运行时使用 Phonegap 和 Javascript 读取应用程序包中的文件

ObjC Plist 文件读取比 JSON 更快?

使用 evaluateJavaScript(..) 调用 javascript 函数,以读取应用程序包中的文本文件

每秒读取和更新json文件数据

使用VS2017中的AWS无服务器应用程序读取appsettings.json文件

另一个进程错误正在使用 UWP StorageFile 文件