我正在用 swift 编写一个简单的 iOS 应用程序,它对我的服务器进行 ajax 调用。这是相关的swift代码:
class Request : NSObject {
func send(url: String, f: (NSData)-> ()) {
var request = NSURLRequest(URL: NSURL(string: url)!)
var response: NSURLResponse?
var error: NSErrorPointer = nil
var data = NSURLConnection.sendSynchronousRequest(request, returningResponse: &response, error: error)
//var reply = NSString(data: data!, encoding: NSUTF8StringEncoding)
f(data!)
}
}
class myObj: NSObject {
let baseURL: String
var message: String
init() {
self.baseURL = XXXXXXXXXXXXX
self.message = "No Message"
}
func check() -> Bool {
let locationURL = self.baseURL
self.message = locationURL
var request = Request()
request.send(locationURL, f: {(result: NSData)-> () in
let jsonData: NSData = result
var error: NSError?
let jsonDict = NSJSONSerialization.JSONObjectWithData(jsonData, options: nil, error: &error) as! NSDictionary
self.message = jsonDict["title"] as! String
})
return true
}
}
这是我返回虚拟 JSON 的服务器端代码:
<?php
header('Content-Type: application/json; charset=utf-8');
if(isset($_GET['location'])) {
echo json_encode(Array( 'success' => true, 'message' => 'I came from the server.', 'title' => 'tittttt'));
} else if(isset($_POST['message'])) {
echo json_encode(Array( 'success' => true, 'message' => 'message received', 'title' => 'ttt'));
} else {
echo json_encode(Array( 'success' => false, 'message' => 'invalid params', 'title' => 'title from server'));
}
?>
当我将 URL 切换为虚拟 json url(我正在使用 http://jsonplaceholder.typicode.com/posts/1?a=b )时,它可以工作;当我使用自己的 URL 时,它会失败并出现以下错误:
fatal error: unexpectedly found nil while unwrapping an Optional value
我在这里做错了什么?
编辑:这是来自服务器的实际 JSON 响应:
{ success: true, message: "I came from the server.", title: "tit-le" }
最佳答案
你有没有尝试过添加
header("Access-Control-Allow-Origin: *");
到你的 PHP
关于php - Swift 不解析来自 PHP 服务器的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32163983/