0

I have a Swift function for a button that when pressed writes some details into a database via 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()

    }

}

The function works great apart from whenever I add this echo jsonline into the PHP script:

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

Then I get an error Thread 8: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subside = 0x0) on this line:

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

And in the debug area the following details

data Data? some response URLResponse? 0x0000618000223500 error Error? nil none

I think I'm missing a line, or need to set a variable to the JSONSerialization instead of 'try!' but I'm very unsure what.

1 Answer 1

2

You are returning null. Try this

if($newresult)
{
 $returnValue["status"] = "Success";
 $returnValue["message"] = "Community is registered";
 return json_encode($returnValue);
}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.