2016-10-20 24 views
0

我有按下時按鈕迅捷的功能通過PHP寫的一些細節到數據庫正常工作:從PHP腳本接收'json_encode'時發生Swift JSON錯誤。沒有它

@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 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 

      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 { }

而在調試區以下細節

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

我覺得我缺少一條線,或需要設置到JSONSerialization,而不是一個變量「試試吧!」但我很不確定。

回答

2

您正在返回null。試試這個

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