![](/img/trans.png)
[英]Converting [NSObject, AnyObject] to [String, AnyObject] in Swift
[英]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!")
}
然后出現錯誤“無法將AnyObject類型的值轉換為預期的參數String”。 我想如果要將它與字符串進行比較,就必須將AnyObject類型的變量轉換為String。 我已經嘗試了在Google上找到的所有選項,但還沒有開始使用。
由於result是[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
}
您可能希望將loginIn強制轉換為Integer,而不是String。
您必須告訴編譯器期望的類型是String
if let loggedIn = result?["loggedIn"] as? String where loggedIn == "1" { ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.