2015-10-04 99 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 **,所以这可能是一个很好的解决方案。 –