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」を取得します。それが役立つことを願っています。