解析JSON导致swift动态转换失败

时间:2015-04-12 22:06:55

标签: php json swift

目标是将来自php的json_encode结果显示为swift作为标签。我参考了许多使用swift解析json的教程和实践,但我仍然无法理解这个问题。

我引用了一个使用date.jsontest.com的示例,并且工作正常。

在我的项目中,我已经解析了这个简单的JSON对象:

[{"username":"user"}]

这是快速代码:

    override func viewDidLoad() {
    super.viewDidLoad()

    // 1
    //let urlAsString = "http://date.jsontest.com"
    let urlAsString = "http://(ip address)/service.php"
    let url = NSURL(string: urlAsString)!
    let urlSession = NSURLSession.sharedSession()

    // 2
    let jsonQuery = urlSession.dataTaskWithURL(url, completionHandler: { data, response, error -> Void in
        if (error != nil) {
            println(error.localizedDescription)
        }

        var err: NSError?

        // 3
        var jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &err) as NSDictionary
        if (err != nil) {
            println("JSON Error \(err!.localizedDescription)")
        }

        // 4
        //let jsonDate: String! = jsonResult["date"] as NSString
        //let jsonId = jsonResult["id"] as NSString
        //let jsonTime: String! = jsonResult["time"] as NSString
        let jsonUser: String! = jsonResult[0] as NSString

        dispatch_async(dispatch_get_main_queue(), {
            //self.dateLabel.text = jsonId
            //self.timeLabel.text = jsonUser
            self.dateLabel.text = jsonUser
        })

    })

    // 5
    jsonQuery.resume()
    //searchItunesFor("JQ Software")
    //startConnection()
    // Do any additional setup after loading the view, typically from a nib.
}

当我使用http://date.jsontest.com作为字符串以及jsonDatejsonTime时,代码运行正常。

我试图了解Xcode中的调试器,但作为Swift的新用户,很难理解问题所在。我可以根除的是我的JSON格式化存在问题。

非常感谢任何提示,谢谢。

编辑:

这是代码http://(ip地址)/service.php,它给了我JSON

<?php

//connect to MySQL


// Create connection
$con=mysqli_connect($hostname,$username,$password,$database);

// Check connection
if (mysqli_connect_errno())
{
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

// This SQL statement selects ALL from the table 'Locations'
$sql = "SELECT username FROM members WHERE id = 1";

// Check if there are results
if ($result = mysqli_query($con, $sql))
{
    // If so, then create a results array and a temporary one
    // to hold the data
    $resultArray = array();
    $tempArray = array();

    // Loop through each row in the result set
    while($row = $result->fetch_object())
    {
        // Add each row into our results array
        $tempArray = $row;
        array_push($resultArray, $tempArray);
    }


    // Finally, encode the array to JSON and output the results
    echo json_encode($resultArray);
}

// Close connections
mysqli_close($con);
?>

0 个答案:

没有答案