php - 从 PHP 脚本接收 'json_encode' 时 Swift JSON 出错。没有它也能正常工作

标签 php ios json swift

我有一个用于按钮的 Swift 函数,当按下该按钮时,它会通过 PHP 将一些详细信息写入数据库:

 @IBAction func createCommunityButtonTapped(_ sender: AnyObject) {

    let communityName = communityNameTextField.text;
    if (communityName!.isEmpty){
        displayMyAlertMessage(userMessage: "You must name your Community");

        return;
    }else{

        func generateRandomStringWithLength(length: Int) -> String {

            var randomString = ""
            let letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"

            for _ in 1...length {
                let randomIndex  = Int(arc4random_uniform(UInt32(letters.characters.count)))
                let a = letters.index(letters.startIndex, offsetBy: randomIndex)
                randomString +=  String(letters[a])
            }

            return randomString
        }

        let communityCode = generateRandomStringWithLength(length: 6)
        passwordTextField.text = communityCode

        let myUrl = URL(string: "http://www.quasisquest.uk/KeepScore/createCommunity.php?");

        var request = URLRequest(url:myUrl!);
        request.httpMethod = "POST";

        let postString = "communityname=\(communityName!)&code=\(communityCode)&email=\(myEmail!)";

        request.httpBody = postString.data(using: String.Encoding.utf8);

        let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
        if (try! JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? [String:AnyObject]) != nil {
            }
        } 

        task.resume()

    }

}

除了我将此 echo json 行添加到 PHP 脚本中之外,该函数工作得很好:

if($newresult)
{
    $returnValue["status"] = "Success";
    $returnValue["message"] = "Community is registered";
    echo json_encode($returnValue);
    return;
}

然后我在这一行收到错误 Thread 8: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subside = 0x0):

if (try! JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? [String:AnyObject]) != nil { }

并且在调试区有以下详细信息

数据数据?一些 响应 URLResponse? 0x0000618000223500 错误错误?零 无

我想我漏掉了一行,或者需要为 JSONSerialization 设置一个变量而不是“try!”但我不确定是什么。

最佳答案

您正在返回 null。试试这个

if($newresult)
{
 $returnValue["status"] = "Success";
 $returnValue["message"] = "Community is registered";
 return json_encode($returnValue);
}

关于php - 从 PHP 脚本接收 'json_encode' 时 Swift JSON 出错。没有它也能正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40149491/

相关文章:

php - Mysql选择所有相差10分钟的行

ios - 在 WhatsApp 中分享 YouTube 链接

javascript - 获取嵌套对象 - 但标识符是所需对象的一部分

python - 如何加快在 Python 中加载和读取 JSON 文件的过程?

php - 学说 2.2 ORM : find extended entity

javascript - HTML5 Canvas 创建的 JPEG 是 "corrupt"还是 "damaged"?

php - 使用 PHP 更新 mysql 数据库表

iOS 设置 MKMapView 相机航向围绕 anchor 旋转

ios - 检查服务器镜像是否已经更新并重新下载

json - MongoDB,在 $convert(aggregation) 中将带逗号的字符串转换为 double 。无法解析数字 '1,533.07'