2016-02-12 71 views
3

取下面兩個樣本:爲什麼我不能將數組添加到數組變量的字典文字中?字典字面;添加一個數組

這工作:

class test{ 

    var myarray: [String?] = [] 

    var dictionary: [String: AnyObject]{ 
     get { 
      return [ 
       "object": [ 
        "array":["",""], 
       ], 
      ] 
     } 
    } 
} 

但這不起作用? 「Contextual type 'AnyObject' cannot be used with dictionary literal."

class test{ 

     var myarray: [String?] = [] 

     var dictionary: [String: AnyObject]{ 
      get { 
       return [ 
        "object": [ 
         "array":[self.myarray], 
         ], 
       ] 
      } 
     } 
    } 
+1

'[ 「」, 「」]'是不一樣的''[字符串?]。可怕的示例代碼讀取順便說一句。 – Eendje

回答

3

的問題是無關的字典文字。在你第一種情況下,

[ "array":["",""]] 

可以轉換爲AnyObject,因爲所有String的自動 如果需要橋接NSString。然後["",""]被橋接至 和NSArray,並且整個表達爲NSDictionary

由於可選類型String?無法轉換爲AnyObject,所以它在第二種情況下不起作用。如果您將定義更改爲

var myarray: [String] = [] 

然後它編譯沒有問題。

0

環顧我找到了解決辦法: '作爲AnyObject'