我正在尝试使用 mongolab 将创建的用户数据从我的 swift 应用程序发送到 heroku 服务器。我可以从 postman 发送数据,它显示在 mogolab 上,但是当我通过 swift 应用程序发送时,它给我以下错误
2019-07-02 22:43:49.473763-0700 Smack[2903:99473] [MC] System group container for systemgroup.com.apple.configurationprofiles path is /Users/amansingh/Library/Developer/CoreSimulator/Devices/53EA3DDB-EA13-45F9-A9C4-6EB6ABF911A1/data/Containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles 2019-07-02 22:43:49.474887-0700 Smack[2903:99473] [MC] Reading from private effective user settings. 2019-07-02 22:44:12.737834-0700 Smack[2903:99604] [AutoFill] Cannot show Automatic Strong Passwords for app bundleID: com.learning.0363.Smack due to error: iCloud Keychain is disabled
import Foundation
import Alamofire
import SwiftyJSON
class AuthService {
static let instance = AuthService()
let defaults = UserDefaults.standard
var isLoggedIn : Bool {
get {
return defaults.bool(forKey: LOGGED_IN_KEY)
}
set {
defaults.set(newValue, forKey: LOGGED_IN_KEY)
}
}
var authToken : String {
get {
return defaults.value(forKey: TOKEN_KEY) as! String
}
set {
defaults.set(newValue, forKey: TOKEN_KEY)
}
}
var userEmail: String {
get {
return defaults.value(forKey: USER_EMAIL) as! String
}
set {
defaults.set(newValue, forKey: USER_EMAIL)
}
}
func registerUser(email: String, password: String, completion: @escaping CompletionHandler){
let lowerCaseEmail = email.lowercased()
let body: [String: Any] = [
"email": lowerCaseEmail,
"password": password
]
Alamofire.request(URL_REGISTER, method: .post, parameters: body, encoding: JSONEncoding.default, headers: HEADER).responseString { (response) in
if response.result.error == nil {
completion(true)
}else{
completion(false)
debugPrint(response.result.error as Any)
}
}
}
func loginUser(email: String, password: String, completion: @escaping CompletionHandler){
let lowerCaseEmail = email.lowercased()
let body: [String: Any] = [
"email": lowerCaseEmail,
"password": password
]
Alamofire.request(URL_LOGIN, method: .post, parameters: body, encoding: JSONEncoding.default, headers: HEADER).responseString { (response) in
if response.result.error == nil {
// if let json = response.result.value as? Dictionary<String, Any>{
// if let email = json["user"] as? String {
// self.userEmail = email
// }
// if let token = json["token"] as? String {
// self.authToken = token
// }
// }
//USING SWIFTY JSON
guard let data = response.data else {
return
}
do {
let json = try JSON(data: data)
self.userEmail = json["user"].stringValue
self.authToken = json["token"].stringValue
} catch {
print(error.localizedDescription)
}
self.isLoggedIn = true
completion(true)
}else{
completion(false)
debugPrint(response.result.error as Any)
}
}
}
}
它显示已登录但是当我检查数据库中的数据时它不存在
最佳答案
不确定“我的数据库中的数据不存在”是什么意思,但是,关于错误,该消息在某种程度上是明确的:
[AutoFill] Cannot show Automatic Strong Passwords for app bundleID: com.learning.0363.Smack due to error: iCloud Keychain is disabled
该应用程序有时会尝试自动填充一些凭据文本字段,但您的 iCloud 钥匙串(keychain)已禁用,从而阻止系统从您的设备检索您的登录名/密码信息。
尝试从这样的设置中启用它:
- 选择“设置”> [您的姓名]
- 点按钥匙串(keychain)并滑动将其打开。
- 输入您的 Apple ID,然后按照说明操作。
提前想一想,如果您的设备上也禁用了自动填充,您可能会遇到类似的错误。
这是一个非常快速的教程,展示了如何设置所有这些:
https://robopress.robotsandpencils.com/strong-passwords-in-ios-12-8ec819b3b99
关于swift - 从 swift 应用程序发出发送数据 Heroku,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56945162/