字符 0 swift 周围的值无效



我希望你今天过得愉快。我遇到了一个错误,我做了一些研究。我认为错误意味着我的 JSON 对象不适合由 swift 3.0 上的 JSON 系列化类序列化。我通过使用 JSONSerialization 类的 .isValidJSONObject 方法验证了我的 json 对象无效。

我检查了我的 json 对象是否有效。错误发生在"JSONSerialization.jsonObject"方法执行的行。如果您能帮助我弄清楚如何解决这个问题,我将非常高兴。请随时请求更多代码部分或项目设置。提前谢谢。

以下是使用的代码:

import UIKit
class ViewController: UIViewController, NSURLConnectionDataDelegate {
lazy var receivedData = NSMutableData()
override func viewDidLoad() {
super.viewDidLoad()
var url = NSURL(string:"http://localhost:8080/OurServer/webresources/server")!
var request = NSURLRequest(url: url as URL)
var connection = NSURLConnection(request: request as URLRequest, delegate: self, startImmediately: false)!
connection.start()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func connection(_ connection: NSURLConnection, didReceive data: Data)
{
receivedData.append(data)
var temp1 = receivedData as NSMutableData
do
{
var temp3 = JSONSerialization.isValidJSONObject(receivedData)
var jsonResult = try JSONSerialization.jsonObject(with: receivedData as Data, options: JSONSerialization.ReadingOptions.allowFragments) as! NSDictionary
print("n")
print(jsonResult)
}
catch let error as NSError
{
print("n" + "(error)")
}
}
}

如评论中所述NSURLConnection已经过时了。

这是一个现代的、符合 Swift 3 标准的代码版本,使用URLSession

class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let url = URL(string:"http://localhost:8080/OurServer/webresources/server")!
let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
if error != nil {
print(error!)
return
}
do {
let jsonResult = try JSONSerialization.jsonObject(with: data!) as! [String:Any]
print("n", jsonResult)
} catch {
print("n", error)
}
}
task.resume()
}
}

检查后,我似乎犯了一个不太聪明的错误。错误出在我的网址上。对不起,那些家伙。

最新更新