Ios 字典没有名为';所有密钥';-swift2获取所有字典密钥失败,出现错误

Ios 字典没有名为';所有密钥';-swift2获取所有字典密钥失败,出现错误,ios,nsdictionary,swift2,Ios,Nsdictionary,Swift2,我在获取字典的键数组时遇到一些问题-这将在UITableView数据模型中使用 对于顶级表,我希望计数为3,并且键为:GMRS、IRLP和WinSystem 代码: let rows = repeaterInfoDict.count // 3 let keyArray = repeaterInfoDict.allKeys // Error: [String:[String:[String:Any]]] does not have a member named 'allKeys' .count收

我在获取
字典
的键数组时遇到一些问题-这将在
UITableView
数据模型中使用

对于顶级表,我希望计数为3,并且键为:GMRS、IRLP和WinSystem

代码:

let rows = repeaterInfoDict.count // 3
let keyArray = repeaterInfoDict.allKeys // Error: [String:[String:[String:Any]]] does not have a member named 'allKeys'
.count收到3,但.allKeys因Xcode错误而出错:[String:[String:Any]]]没有名为“allKeys”的成员

字典的一些细节:

let rows = repeaterInfoDict.count // 3
let keyArray = repeaterInfoDict.allKeys // Error: [String:[String:[String:Any]]] does not have a member named 'allKeys'
repeaterInfoDict定义:

var repeaterInfoDict=String:[String:[String:Any]]

AWS CognitoSync完成同步后字典的外观:

控制台:

let rows = repeaterInfoDict.count // 3
let keyArray = repeaterInfoDict.allKeys // Error: [String:[String:[String:Any]]] does not have a member named 'allKeys'
print(“repeaterInfoDict:\(repeaterInfoDict)”)
-添加了空白格式以便于查看

中继器:

[
 GMRS: 
  [
   1121: [no: "San Jose,CA", pl: 0.0, lt: 37.33939, fq: 462.550, ln: -121.89496, ca: "WPUI299"], 
   1011: [no: "Napa,CA", pl: 0.0, lt: 38.29714, fq: 462.575, ln: -122.28553, ca: "wqbk788"], 
   1104: [no: "Palmdale,CA", pl: 0.0, lt: 34.57943, fq: 462.65, ln: -118.11646, ca: "WQHR999"]
  ], 
 IRLP: 
  [
    1121: [no: "St. Andrews,MB", pl: 127.3, lt: 114.3245, fq: 0.62, ln: 33.2345, ca: "VE4COR"],
    1011: [no: "Birken,BC", pl: 100.0, lt: 114.3245, fq: 147.0, ln: 33.2345, ca: "VA7IP"],
    1104: [no: "Saskatoon,SK", pl: 100.0, lt: 52.11679, fq: 446.1, ln: -106.63452, ca: "VE5RNP"]
  ], 
 WinSystem: 
  [
    1121: [no: "Los Angeles,CA", pl: -100.0, lt: 34.05223, fq: 448.06, ln: -118.24368, ca: "K6JSI"],
    1011: [no: "Escondido,CA", pl: -100.0, lt: 33.11921, fq: 449.08, ln: -117.08642, ca: "K6JSI"],
    1104: [no: "San Diego,CA", pl: -100.0, lt: 32.71533, fq: 447.64, ln: -117.15726, ca: "K6JSI"]
  ]
]

print ("repeaterInfoDict.count: \(repeaterInfoDict.count)")
repeaterInfoDict.count: 3
  • 在第一级表中,我需要3行和键:GMRS、IRLP、WinSystems
  • 在IRLP的第二级表中,我希望有3行和键:11210111104
  • 在1121的第三级表中,我希望格式化
    字典
    [编号:“加利福尼亚州洛杉矶”,pl:-100.0,lt:34.05223,fq:448.06,ln: -118.24368,ca:“K6JSI”]进入自定义单元格/视图

  • 在这个嵌套的
    字典中获取键的正确/最佳方法是什么?我猜您不需要将所有键都放在一个数组中。然后,我建议您使用从
    keys
    属性(而不是
    allKeys
    )接收到的键对项目进行循环

    请记住,这不会像您输入的那样进行排序,
    字典不存储订单。

    替换为:

    let keyArray=repeaterInfoDict.allKeys

    与:

    let keyArray=repeaterInfoDict.keys.array

    现在当我打印(“**keyArray:\(keyArray)”)
    时,我得到:

    **keyArray:[GMRS、IRLP、WinSystem]

    我不知道为什么
    repeaterInfoDict.allKeys
    没有返回此数组


    有更好的解决方案吗?

    您的权利,它不需要在单个嵌套的
    字典中
    ,我可以在CognitoSync完成后分解id。但它已经从JSON输入中解码,看起来是一个不错的结构。仍在试图找出.count有效的原因,但.allKeys无效。@Kent
    allKeys
    未在Swift字典中定义。使用
    keys
    获取一组键。这应该是问题的答案,而不是答案。只有当你有问题的解决方案时才使用答案部分