これは私のコードです:HTTP GETリクエストから返されたJSONを処理する方法 - Swift?
let myUrl = NSURL(string:"hostname/file.php");
let request = NSMutableURLRequest(URL:myUrl!);
request.HTTPMethod = "GET";
NSURLSession.sharedSession().dataTaskWithRequest(request, completionHandler: { (data:NSData?, response:NSURLResponse?, error:NSError?) -> Void in
dispatch_async(dispatch_get_main_queue())
{
if(error != nil)
{
//Display an alert message
return
}
do {
let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as? NSDictionary
if let parseJSON = json { /* when the app reach here , will enter the catch and get out */
let userId = parseJSON["id"] as? String
print(userId)
if(userId != nil)
{
NSUserDefaults.standardUserDefaults().setObject(parseJSON["id"], forKey: "id")
NSUserDefaults.standardUserDefaults().setObject(parseJSON["name"], forKey: "name")
NSUserDefaults.standardUserDefaults().synchronize()
} else {
// display an alert message
print("error")
}
}
} catch
{
print(error)
}
}
}).resume()
私のアプリは、JSONにデータベースから配列を解析するPHPファイルからJSONを取得しecho
を使用してそれを返すと、それは以下の2行を返す:
[{"id":"1","name":"CIT","adminstrator_id":"1"},{"id":"2","name":"HelpDesk","adminstrator_id":"1"}]
を私はjson
の説明を印刷するとき、私が最初にを印刷するとき、私は、私がjson
NSArray
にキャストしようとしたnil
取得します私は良いのですが、アプリはif文if let parseJSON = json
に到達したとき、私はNSDictionaryのにjson[0]
の結果をキャストしようとしたとき、まだ私はそれからnilを取得します
それはキャッチに入り、それがいずれかを印刷していない最初の行を取得エラー、私はなぜか分からないのですか?
この私のPHPコード:
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "mydb";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * FROM department";
$result = $conn->query($sql);
$rows = array();
if ($result->num_rows > 0) {
// output data of each row
while($r = $result->fetch_assoc()) {
$rows[] = $r;
}
$conn->close();
echo json_encode($rows);
} else {
$conn->close();
echo "0 results";
}
?>
だから私の要求または要求の処理に問題がありますか?
データを(文字列に変換して)印刷できますか? 'json'はNSDictionaryまたはNSArrayを意味しますか? – Larme
@Larme実際にはそれは無用です。私はそれを印刷します。はい、NSDictionaryになります。 – Zizoo
@Larme JSONはDBから複数の行を返しますが、問題にはなりませんでしたか? – Zizoo