【发布时间】:2018-02-16 00:33:59
【问题描述】:
我是初学者,我向服务器发送登录请求,服务器需要用户名、密码、ket 和注册 ID(Firebase 云消息传递的令牌),如下所示,regID 实际上是一个字符串
但为什么我需要对regID 进行字符串插值?
我认为在parameters字典中,如果我只写regID作为“registrationId”的值就可以了
"registrationId" : regID
这样,
但是不行,服务器不会收到那个registrationID,所以只好这样写
"registrationId" : "\(regID)"
regID 实际上是一个字符串,但我不明白为什么我必须对字符串值进行字符串插值。我使用的代码如下
@IBAction func loginButtonDidPressed(_ sender: Any) {
self.activityIndicator.startAnimating()
guard let regID = registrationID else {return}
// send request to server
let url = URLService.login.endPoint
let parameters = [
"loginUser" : usernameTextField.text!,
"password" : passwordTextField.text!,
"registrationId" : "\(regID)",
"key" : "@PakuAttendance20171207@"
]
// the networking service below is actually alamofire
NetworkingService.fetchJSON(url: url, methodUsed: .post, parameters: parameters) { (result) in
switch result {
case .failure(let error) :
self.activityIndicator.stopAnimating()
self.showAlert(alertTitle: "Sorry", alertMessage: error.localizedDescription, actionTitle: "Back")
case .success(let jsonFromServer) :
}
registrationID 值为:
dYhReMYcbZs:APA91bGK9fH_Xa5lctmuH3e4m1zY9gUsVMfR34zsBHoVYStLITIcWZKr30Mu-0NqLuSE-rr25V2BnwAdpWvdAzW7i1BNFokz33pEoSr2fBZd468z0SwOGTHNZHNZHNZF3
【问题讨论】:
-
是什么让你认为你必须使用字符串插值?
-
请发布代码,而不是代码图片。
-
"regID 实际上是一个字符串。"你为什么相信这个?你检查
regID的类型了吗? (不要只是打印出来;检查值。Alt 键单击变量,或print(type(of: regID))。“服务器将不会收到该registrationID”“不会收到”是什么意思。收到值?您收到错误吗?它是空的吗?其他值?