0

必要な文字列とIDを使用してNSMutableDictionaryを作成しました。
これは、少しこのようになります。

| |

|| -Item1(キー演習と文字列:テスト+キーIDと文字列:OIK74で構成されます

|| -Item2(キー演習と文字列:testing3 +キーIDと文字列:424REで構成されます)

|| -Item3 (キー演習と文字列:testing5 +キーIDと文字列:RET23で構成されます

もちろん、Exercise文字列に対応するキーIDを検索するにはどうすればよいですか。

配列では、containsObjectを使用して比較できます。

同じことをして、対応する文字列を取得したいと思います。たとえば、これを実行したいと思います(人々がアイデアを得ることができるようにするため)

ThisDictionary containsObject LookForObject

そして、キーID = OIK74を見つけたら、それを使って文字列テストを行いたいと思います。私はxmlparsingを使用してこの検索を実行しましたが、IDと対応する文字列を取得するためのより高速な方法が必要だと思っていました。

4

2 に答える 2

1

を使用して辞書でキーの値を検索できますobjectForKey:。例えば:

NSString* exercise = [dictionary objectForKey:@"OIK74"];

詳細については、NSDictionary クラス リファレンスを参照してください。

于 2009-07-21T16:13:15.000 に答える
0

OPは「OIK74」を検索して「テスト」を取得したいと考えています。

私が最初に提案することは、OIK74 をキーにしてから、文字列値を取得するのは簡単なことです。各行に同じ演習キーがある場合、ID が実際には一意である必要があり、キーとして非常に適切に機能する ID であるように見えると、冗長に見えます。

もしあなたがこのデータ配置に固執しているのなら (もう一度言いますが、可能であれば再訪すべきだと思います)、あなたは単純なキーパスドリルとは違う何かを見ていることになります. 特定の行の辞書で兄弟ノードの値を探しています。NSXMLDocument は、私が信じている xpath クエリでこれを非常に簡単に行うことができます。ここでの概念上の障害は、NSDictionary が plist の構造を反映しているということですが、NSDictionary は実際には XML ではありません。タグと値がありません。キーと値があります。NSDictionary の XML/plist 表現では、タグは<key>and<value>であり、NSDictionary のキーと値はこれらのタグの値です。

あなたが概説したデータの内部構造が何であるかは100%わかりませんが、次のようなものがあるようです

root = (
    item1 = { 
        Exercise = "testing",
        ID = "OIK74"
    }
    item2 = {
        Exercise = "testing3",
        ID = "424RE"
    }
    item3 = {
        Exercise = "testing5",
        ID = "RET23"
    }
)

テキスト plist 形式で。そうですか?もしそうなら、私が提案するのは、これをより単純な構造に完全に再配置することです:

{
    "OIK74" = "testing",
    "424RE" = "testing3",
    "RET23" = "testing5"
}

これらの ID のデータがさらにある場合は、次のように辞書をキーの値として設定できます。

{
    "OIK74" = { 
        "Exercise" = "testing",
        "OtherDataPoint" = "othervalue"
    },
    "424RE" = { 
        "Exercise" = "testing3",
        "OtherDataPoint" = "othervalue3"
    },
    "RET23" = { 
        "Exercise" = "testing5",
        "OtherDataPoint" = "othervalue5"
    }
}

あなたが探している OIK74 値がキーであると述べたので、このアプローチは私見よりもはるかに理にかなっています。この新しいデータ構造では、どちらか[dictionary valueForKey:@"OIK74"];または[dictionary valueForKeyPath:@"OIK74.Exercise"];それぞれで値「testing」を取得します。それが役立つことを願っています。

于 2010-06-27T16:49:03.147 に答える