Swift/MySql/PHP - “无法读取数据,因为它的格式不正确。”错误
Posted
技术标签:
【中文标题】Swift/MySql/PHP - “无法读取数据,因为它的格式不正确。”错误【英文标题】:Swift/MySql/PHP - "The data couldn’t be read because it isn’t in the correct format." error 【发布时间】:2020-09-30 01:32:00 【问题描述】:当我尝试将 mysql 数据加载到我的 swift 程序中时出现此错误。在将输出放入我的 SwiftUI 之前,我试图在控制台中获取输出。当我使用断点进行调试时,我可以看到加载到变量中的数据,但 Swift 无法读取它。如果我找到任何解决方法,我看了很多视频,但没有运气。
错误:无法读取数据,因为格式不正确。
在这一行出现错误:
let postsData = try JSONDecoder().decode([Post].self, from: data)
任何帮助都非常感谢,因为我在这里已经快一周了。谢谢。
这是我的完整代码。
Post.swift 结构:import Foundation
struct Post: Codable
var Name: String!
var City: String!
JsonViewController.swift 类:
import UIKit
class JsonViewController: UIViewController
override func viewDidLoad()
super.viewDidLoad()
// Do any additional setup after loading the view.
fetchPostData (posts) in
for post in posts
print(post.Name!)
func fetchPostData(completionHandler: @escaping ([Post]) -> Void)
let url = URL(string: "https://localhost/service.php")!
let task = URLSession.shared.dataTask(with: url) (data, response, error) in
guard let data = data else return
do
let postsData = try JSONDecoder().decode([Post].self, from: data)
completionHandler(postsData)
catch
let error = error
print(error.localizedDescription)
task.resume()
Web 浏览器中的输出 - 来自 service.php:
["Name":"John","City":"Sydney"]
【问题讨论】:
这个好像和php没什么关系 实际上,我刚刚发现了我的 service.php 文件的一个问题,它有几个导致问题的 html 标签。清理文件后工作正常。感谢您的回复。 【参考方案1】:虽然数据在网络浏览器中以 JSON 格式正确加载,但如果您的 service.php 文件在 php 标签之前和之后有任何 HTML 标签等,它将无法在 Swift 中正确解析。非常愚蠢的错误,但希望对其他人有所帮助。
【讨论】:
以上是关于Swift/MySql/PHP - “无法读取数据,因为它的格式不正确。”错误的主要内容,如果未能解决你的问题,请参考以下文章