Swift:写入 JSON 并在本地保存到 iPhone 文件
Posted
技术标签:
【中文标题】Swift:写入 JSON 并在本地保存到 iPhone 文件【英文标题】:Swift: write JSON and save to iPhone File locally 【发布时间】:2020-05-21 20:26:14 【问题描述】:我正在学习如何将 JSON 格式的数据写入 iPhone。因此,单击一个按钮,我想将这些数据保存到 iPhone。我看了一个关于如何编写一些简单文本并将其保存到 iPhone 文件中的简单外观,并且它起作用了。但是,我尝试将相同的想法应用于 JSON 数据,但仍未弄清楚。我试过了:
我尝试将其作为我的数据(jsondata)而不是等于一些书面文本的内容。 但它似乎不适用于
尝试 jsondata.write(to: fileURL, atomically: false, encoding: .utf8)
@IBAction func writeFiles(_ sender: Any)
let file = "\(UUID().uuidString).txt"
let contents = "Testing"
let dir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
let fileURL = dir.appendingPathComponent(file)
do
try contents.write(to: fileURL, atomically: false, encoding: .utf8)
catch
print("Error: \(error)")
对不起,我现在有点新,正在学习 Swift
谢谢!
【问题讨论】:
【参考方案1】:这是一个简单的项目供您克隆或浏览源文件 https://github.com/eSpecialized/WriteJsonToFiles
视图控制器包含示例; https://github.com/eSpecialized/WriteJsonToFiles/blob/master/WriteToFiles/ViewController.swift
写作基本上需要做几个步骤;
-
组装您的对象(字符串等)。
使用 JSONEncoder 转换为 JSONEncoded 数据。
实际的“数据”对象可以将其二进制内容写入存储。
读取数据;
-
您需要一个 JSONDecoder。
您需要使用 Data(contents:...) 将 FileContents 保存在内存中
将内存中的数据解码回对象,就像它被存储一样。
一个更复杂的将 JSON 读写到 Web 服务 API 的示例在 Medium 上 > https://medium.com/better-programming/json-parsing-in-swift-2498099b78f
概念相同,目标从用户文件夹中的文件更改为 Web 服务 API。我觉得这足以让您开始阅读和编写 JSON。
Medium 文章更进一步,向您介绍了数据模型并使用 Codable 协议读写这些数据模型结构。
享受吧! :)
【讨论】:
非常感谢这个例子。我正在尝试在模拟器中解决这个问题。我试着在栏上写字并保存。但是我在 iPhone 文件中找不到这些结果?我对此有点陌生。你能解释一下如何“组装你的对象(字符串等)”吗? 嗨,比尔,我想效仿你的榜样。但我遇到的问题是,如果我有一个已定义的 JSON 结构,我怎么能称赞我的捕获到文件呢? (不是来自网络 API) Q) 我在 iPhone 文件中找不到这些结果? A) 现在在 2020 年使用 Xcode 11.x 和 Mac OS Catalina,iTunes 不可用并且不能再在 Mac 上使用。相反,您需要使用 Finder 来查看 iPhone 上的 App Files。 1. 您需要在应用程序中添加一个 plist 条目。应用程序支持 iTunes 文件共享 = YES 实际密钥原始格式;以上是关于Swift:写入 JSON 并在本地保存到 iPhone 文件的主要内容,如果未能解决你的问题,请参考以下文章
如何保存响应 JSON 数组并在 swift 中使用用户默认值进行检索
如何从本地 JSON 文件解析数据并保存在模型类中并在 tableview 中使用