Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift/MySql/PHP-“;数据无法’;因为它是’;t的格式正确。”;错误_Ios_Mysql_Swift_Xcode - Fatal编程技术网

Ios Swift/MySql/PHP-“;数据无法’;因为它是’;t的格式正确。”;错误

Ios Swift/MySql/PHP-“;数据无法’;因为它是’;t的格式正确。”;错误,ios,mysql,swift,xcode,Ios,Mysql,Swift,Xcode,当我尝试将mysql数据加载到我的swift程序时,我遇到了这个错误。我试图在控制台中获取输出,然后再将其放入SwiftUI。当我使用断点进行调试时,我可以看到加载到变量中的数据,但Swift无法读取它。看了很多视频,如果我找到任何修复,但没有运气 错误:数据格式不正确,无法读取。 获取此行的错误信息: let postsData=try JSONDecoder().decode([Post].self,from:data) 非常感谢您的帮助,因为我已经在这里呆了将近一个星期了。多谢各位 这是我

当我尝试将mysql数据加载到我的swift程序时,我遇到了这个错误。我试图在控制台中获取输出,然后再将其放入SwiftUI。当我使用断点进行调试时,我可以看到加载到变量中的数据,但Swift无法读取它。看了很多视频,如果我找到任何修复,但没有运气

错误:数据格式不正确,无法读取。

获取此行的错误信息:
let postsData=try JSONDecoder().decode([Post].self,from:data)

非常感谢您的帮助,因为我已经在这里呆了将近一个星期了。多谢各位

这是我的完整代码

  • Post.swift结构:
  • JsonViewController.swift类:
web浏览器中的输出-来自service.php:

[{"Name":"John","City":"Sydney"}]

尽管数据在web浏览器中以JSON格式正确加载,但如果您的service.php文件在php标记之前和之后有任何HTML标记等,它将无法在Swift中正确解析。非常愚蠢的错误,但希望这能帮助其他人。

这似乎与phpac没有任何关系。实际上,我刚刚发现我的service.php文件存在一个问题,该文件中几乎没有导致问题的html标记。清理文件后工作正常。谢谢你的回复。
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()
    }

}
[{"Name":"John","City":"Sydney"}]