1

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ここで、これらのカウントされた文字列を使用して、キーが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 オブジェクトからデータにアクセスするにはどうすればよいですか?

UPDATE : Martin R からのコメントのおかげで解決されました。StringオブジェクトはもともとNSString(から取得したNSScanner) オブジェクトであり、間違ってキャストしていました:

let string = String(originalString)

次のように変更した後:

let string = (originalString as! String)

すべて正常に動作します。

4

0 に答える 0