在 swift 中将 AnyObject 转换为 String 无效
converting AnyObject to String in swift not working
我从我的应用程序向服务器发出 POST 请求,我得到 jsonString 作为响应。我制作了将字符串转换为字典的函数,如下所示:
func convertStringToDictionary(text: String) -> [String:AnyObject]? {
if let data = text.dataUsingEncoding(NSUTF8StringEncoding) {
do {
return try NSJSONSerialization.JSONObjectWithData(data, options: []) as? [String:AnyObject]
} catch let error as NSError {
print(error)
}
}
return nil
}
从服务器获得响应后,我通过函数将字符串转换为字典,然后我想检查用户是否已登录:
let result = convertStringToDictionary(jsonString as String)
if (result!["loggedIn"] == "1")
{
print("You are logged in!")
}
然后我收到错误 "Cannot convert value of type AnyObject? to expected argument String"。如果我想将它与字符串进行比较,我想我必须将 AnyObject 类型的变量转换为字符串。我已经尝试了我在 Google 上找到的每个选项,但我还没有让它工作。
因为结果是 [String : AnyObject]
类型的字典,您从中提取的值将被键入为 AnyObject?
,它没有 ==
的有效运算符重载 String
。您需要将提取的值转换为 String
,然后才能将其与“1”进行比较。
您可能想要的是:
if let result = convertStringToDictionary(jsonString as String),
loggedIn = result["loggedIn"] as? String
where loggedIn == "1" {
print("You are logged in")
}
请注意,如果您的 JSON 将 "loggedIn" 字段作为整数,例如:
{
"loggedIn" : 1
}
您可能希望将 loggedIn 转换为 Integer,而不是 String。
你必须告诉编译器期望的类型是 String
if let loggedIn = result?["loggedIn"] as? String where loggedIn == "1" { ...
我从我的应用程序向服务器发出 POST 请求,我得到 jsonString 作为响应。我制作了将字符串转换为字典的函数,如下所示:
func convertStringToDictionary(text: String) -> [String:AnyObject]? {
if let data = text.dataUsingEncoding(NSUTF8StringEncoding) {
do {
return try NSJSONSerialization.JSONObjectWithData(data, options: []) as? [String:AnyObject]
} catch let error as NSError {
print(error)
}
}
return nil
}
从服务器获得响应后,我通过函数将字符串转换为字典,然后我想检查用户是否已登录:
let result = convertStringToDictionary(jsonString as String)
if (result!["loggedIn"] == "1")
{
print("You are logged in!")
}
然后我收到错误 "Cannot convert value of type AnyObject? to expected argument String"。如果我想将它与字符串进行比较,我想我必须将 AnyObject 类型的变量转换为字符串。我已经尝试了我在 Google 上找到的每个选项,但我还没有让它工作。
因为结果是 [String : AnyObject]
类型的字典,您从中提取的值将被键入为 AnyObject?
,它没有 ==
的有效运算符重载 String
。您需要将提取的值转换为 String
,然后才能将其与“1”进行比较。
您可能想要的是:
if let result = convertStringToDictionary(jsonString as String),
loggedIn = result["loggedIn"] as? String
where loggedIn == "1" {
print("You are logged in")
}
请注意,如果您的 JSON 将 "loggedIn" 字段作为整数,例如:
{
"loggedIn" : 1
}
您可能希望将 loggedIn 转换为 Integer,而不是 String。
你必须告诉编译器期望的类型是 String
if let loggedIn = result?["loggedIn"] as? String where loggedIn == "1" { ...