php - Swift 不解析来自 PHP 服务器的 JSON

标签 php ios json swift

我正在用 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/

相关文章:

c++ - 无法包含 Clion 库中的文件

php - YouTube Api(V2.0 或 3.0)获取给定 channel url 的 channel 信息

iphone - 同一个委托(delegate)上的多个 UIActionSheets

php - 如何使用 Jquery Ajax 更新 PHP 变量?

ios - 当滑动太快或连续快速左右滑动时如何跟踪 pageViewController 的索引

ios - 检查数字的 UITextfield 间隔

javascript - 无法访问 JSON 对象的子对象

ios - NSJSONSerialization - 与 JSON 的核心数据关系

WHERE 子句 MySQL 中的 PHP 字符串变量

php - PHP中的面向对象编程不清楚