我正在使用Swift,使用字典,然后尝试将信息放入数组,并访问数组中的值。这就是我的代码中的内容:
// I have abbreviated the actual dictionary to not waste question space...
var plateIssuers: Dictionary<String,String> = [
"Alberta": "Canada",
"British Columbia": "Canada",
"Manitoba":"Canada",
"VERMONT":"USA",
"WASHINGTON":"USA",
"WISCONSIN":"USA",
"WEST VIRGINIA":"USA",
"WYOMING]":"USA"]
// This is an attempt that seems to work to create an Array of unique values (turning into sets and then back to array
let countries:Array = NSSet(array: Array<String>(plateIssuers.values)).allObjects
let issuers:Array = NSSet(array: Array<String>(plateIssuers.keys)).allObjects
稍后,在tableView函数中,我有以下代码:
println(countries[1])
cell.textLabel.text = countries[(indexPath.row)]
println运行正常(打印&#34;加拿大&#34;),但是cell.textLabel行会出现以下错误(不会构建):
找不到&#39;下标&#39;的重载接受提供的参数
println如何工作但不是下一行。我还应该提一下,如果我只是引用一个以简单方式构建的数组,其中包含字符串,那么第二行就可以工作了。我的问题是我创建&#34;国家&#34;的方式。阵列?或者是我引用它的问题?感谢
答案 0 :(得分:3)
这样做:
let countries = NSSet(array: Array<String>(plateIssuers.values)).allObjects as Array<String>
像往常一样,斯威夫特的编译器在表达问题时很腼腆。这意味着订阅一个AnyObject数组,这是从allObjects
返回的,这是可能的,但是不会给你一个字符串,这就是一个标签{{1}属性期望。