簡體   English   中英

快速將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!")
        }

然后出現錯誤“無法將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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM