使用NSSet构建可用的Swift数组很麻烦

时间:2014-07-06 23:41:28

标签: arrays string swift nsset

我正在使用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;的方式。阵列?或者是我引用它的问题?感谢

1 个答案:

答案 0 :(得分:3)

这样做:

let countries = NSSet(array: Array<String>(plateIssuers.values)).allObjects as Array<String>
像往常一样,斯威夫特的编译器在表达问题时很腼腆。这意味着订阅一个AnyObject数组,这是从allObjects返回的,这是可能的,但是不会给你一个字符串,这就是一个标签{{1}属性期望。