Access data in Dictionary from NSCountedSet objects

243 views Asked by At

I have an NSCountedSet consisting of String objects, if I iterate over the set and print it out, I see something like this:

for item in countedSet {
    print(item)
}

Optional(One)
Optional(Two)

The countedSet is created from an Array of String objects:

let countedSet = NSCountedSet(array: countedArray)

If I print the array I see something like this:

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

Now, I want to use those counted strings to access data in a Dictionary, where the keys are String type and the values have the type [String : AnyObject]. If I print the dictionary, I see all the data.

However, if I use of the objects from the countedSet to access the dictionary, I always get a nil value back:

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

    print(data)
}

nil
nil

But

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

gives me the expected data.

What am I missing here, how can I access my data from the countedSet objects?

UPDATE: solved thanks to the comment from Martin R. The String objects were originally NSString objects (obtained from NSScanner), and I was casting them wrongly:

let string = String(originalString)

after I changed it to:

let string = (originalString as! String)

All works fine.

0

There are 0 answers