2015-10-04 81 views
0

如何在嵌套Swift字典中找零?Swift嵌套字典無

var d: [String: AnyObject?] = [ 
    "name": "Rodrigo", 
    "number": 1, 
    "nil": nil, 
    "more": [ 
     "a": 1, 
     "b": 2, 
     "nil": nil 
    ] 
] 

第二nil(內"more")給我的錯誤Type of expression is ambiguous without more context

回答

3

您在這裏遇到的問題是Swift的Dictionary是值類型,因此不會自動符合AnyObject。編譯器試圖幫助你在這裏,並橋接到NSDictionary,其中AnyObject,但不幸的是NSDictionary不能容納nil值,所以你運氣不好。

在我看來,你有幾個選擇:

  1. 進入標準Objective-C的路線,在你的嵌套數組使用NSNull()代替nil
  2. 反思您的數據結構。也許不是嵌套字典,而是字符串鍵,你可以構建一個struct PersonData,它包含你在輸入屬性(包括可選項)中需要的所有信息。你可能會發現這種方法甚至比這種方法更好。
+0

所以基本上沒有辦法? = /我想要的只是通過整個應用程序中的一系列更新來構建這本詞典,並且(每5秒鐘)讓這個詞典變成一個JSON並通過網絡發送它來更新我的服務器中的某些東西。 5秒通知程序不需要知道它將通過網絡發送哪些數據,它只是知道它有點像JSON(即字典)。 –

+0

我可以使用空字符串而不是零,但這將是語義錯誤,因爲假設我的字典中有一個鍵是「用戶」,並且該用戶可以是[「名稱」:「R」,「年齡「:1]或零。 –

+0

@RodrigoRuiz:請注意,NSJSONSerialization將'NSNull()'轉換爲JSON ** null **,所以這可能是一個很好的解決方案。 –