1

我有一个由对象NSCountedSet组成的String对象,如果我遍历集合并将其打印出来,我会看到如下内容:

for item in countedSet {
    print(item)
}

Optional(One)
Optional(Two)

countedSet 是从一个对象创建Array的:String

let countedSet = NSCountedSet(array: countedArray)

如果我打印数组,我会看到如下内容:

["Optional(One)", "Optional(One)", "Optional(One)", "Optional(Two)", "Optional(Two)"]

现在,我想使用这些计数字符串来访问 a 中的数据Dictionary,其中键是Stringtype ,值是 type [String : AnyObject]。如果我打印字典,我会看到所有数据。

但是,如果我使用 countedSet 中的对象来访问字典,我总是会得到一个 nil 值:

for item in countedSet {
    let key = item as? String
    let data = dictionary[key!]  // Xcode forced me to unwrap key

    print(data)
}

nil
nil

let key = "One"
let data = dictionary[key]

给了我预期的数据。

我在这里缺少什么,如何从 countedSet 对象访问我的数据?

更新:感谢 Martin R 的评论解决了。这些String对象最初是NSString对象(从 获得NSScanner),我错误地投射它们:

let string = String(originalString)

在我将其更改为:

let string = (originalString as! String)

一切正常。

4

0 回答 0