NSCountedSet
オブジェクトで構成されてString
います。セットを繰り返し処理して印刷すると、次のようになります。
for item in countedSet {
print(item)
}
Optional(One)
Optional(Two)
countSet はオブジェクトの から作成されArray
ますString
:
let countedSet = NSCountedSet(array: countedArray)
配列を印刷すると、次のように表示されます。
["Optional(One)", "Optional(One)", "Optional(One)", "Optional(Two)", "Optional(Two)"]
Dictionary
ここで、これらのカウントされた文字列を使用して、キーがString
type で、値が 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 オブジェクトからデータにアクセスするにはどうすればよいですか?
UPDATE : Martin R からのコメントのおかげで解決されました。String
オブジェクトはもともとNSString
(から取得したNSScanner
) オブジェクトであり、間違ってキャストしていました:
let string = String(originalString)
次のように変更した後:
let string = (originalString as! String)
すべて正常に動作します。