編集(詳細のレイヤーを見逃しました):各教師には一連のクラスがあります。(JSON もバリデーターで実行したので、少し読みやすくなっています) 次の JSON を想定します。
{
"schools": [
{
"schoolID": "01",
"schoolName": "School01",
"teachers": [
{
"name": "Mr. Russell",
"teacherID": "teach01",
"classes": [
{
"className": "History",
"classID": "class01"
},
{
"className": "Civics",
"classID": "class02"
}
]
},
{
"name": "Mrs. Pearl",
"teacherID": "teach02",
"classes": [
{
"className": "English",
"classID": "class05"
},
{
"className": "Poetry",
"classID": "class06"
}
]
}
]
},
{
"schoolID": "02",
"schoolName": "School01",
"teachers": [
{
"name": "Mr. Russell",
"teacherID": "teach05",
"classes": [
{
"className": "Pre-Calc",
"classID": "class10"
},
{
"className": "Calculus",
"classID": "class12"
}
]
},
{
"name": "Mr. Marks",
"teacherID": "teach07",
"classes": [
{
"className": "History",
"classID": "class01"
},
{
"className": "Driving",
"classID": "class20"
}
]
}
]
}
]
}
つまり、学校の配列があり、各学校には教師の配列が含まれ、各教師にはクラスの配列が含まれています。(JSON の正確なフォーマットが正しくない場合は申し訳ありません。これは理論上のモデルです。NDA の要件により、実際のモデルを明らかにすることはできません。実際のモデルは健全です。)
NSPredicate と KVC を使用してこのコレクションを検索し、「History」という名前のすべてのクラス名を取得する必要があります。いくつかの異なる方法で実行しようとしましたが、空になります。例えば:
NSPredicate *pred = [NSPredicate predicateWithFormat:@"ANY schools.teachers.classes.className == %@", @"History"];
しかし、私は空っぽに戻ってきます。私が試みていることは、KVC が実行できることに対して複雑すぎますか? classNames を検索する前に、各学校を反復処理してから、各教師を反復処理する必要がありますか? または、やりたいことが可能である場合、何が欠けていますか?
ありがとう。