2015-08-22 76 views
1

我想將一個PFUser(從Parse.com)轉換爲[String:AnyObject]類型的字典,但是我得到了下面的錯誤,這對我來說似乎很困惑。我做了谷歌搜索,發現以下兩個SO問題,其中,但是,仍然沒有解決我的問題有所幫助:Swift:'(String) - > AnyObject?'沒有名爲'下標'的成員

錯誤:

'(String) -> AnyObject?' does not have a member named 'subscript' 

找到這兩個職位: relevant SO post 1relevant SO post 2

我PFUser有鍵:全名電子郵件,緯度,經度linkedInUrl

由於上述鍵的值類型是String和Double的混合。所以我試圖創建以下字典:

var userData : [String: AnyObject] = [ 
      "fullName" : pfUser.valueForKey("fullName") as? String, 
      "latitude" : pfUser.valueForKey("latitude") as? Double, 
      "longitude" : pfUser.valueForKey("longitude") as? Double, 
      "email" : pfUser.valueForKey("email") as? String, 
      "linkedInUrl" : pfUser.valueForKey["linkedInUrl"] as? String 
     ] 

我的XCode的版本是6.4。我感謝您的幫助。

回答

2

您聲明瞭錯誤的類型userData。它必須是[String: AnyObject?],因爲您的值是可選項。

並且不要忘記用這條線"linkedInUrl" : pfUser.valueForKey("linkedInUrl") as? String更改這條線"linkedInUrl" : pfUser.valueForKey["linkedInUrl"] as? String

您的代碼將是:

var userData : [String: AnyObject?] = [ 
     "fullName" : pfUser.valueForKey("fullName") as? String, 
     "latitude" : pfUser.valueForKey("latitude") as? Double, 
     "longitude" : pfUser.valueForKey("longitude") as? Double, 
     "email" : pfUser.valueForKey("email") as? String, 
     "linkedInUrl" : pfUser.valueForKey("linkedInUrl") as? String 
    ] 
1

有兩個錯誤,在當前的代碼

第一個是,使用()而不是使用[ ]得到使用以下行鍵的值。

"linkedInUrl" : pfUser.valueForKey["linkedInUrl"] as? String

第二個是,使用感嘆號代替解開可選。

你的代碼應該如下所示。

var userData : [String: AnyObject] = [ 
    "fullName" : pfUser.valueForKey("fullName") as! String, 
    "latitude" : pfUser.valueForKey("latitude") as! Double, 
    "longitude" : pfUser.valueForKey("longitude") as! Double, 
    "email" : pfUser.valueForKey("email") as! String, 
    "linkedInUrl" : pfUser.valueForKey("linkedInUrl") as! String 
] 

另一種解決方法是,使字典聲明爲[String: AnyObject?]來保存可選值。

相關問題