0

私の iOS アプリでは、教師のリストを plist からテーブルビューに読み込んでいますが、うまく機能しています。

別の plist には、ルート配列 > ディクショナリ > 4 つの文字列の階層があり、同じ文字列を持つ複数のディクショナリがあります。これは学校用なので、キーは「ClassName」、「Period」、無関係な番号、「Teacher」の名前です。各教師は 1 日に複数のクラスを担当しており、名前は同じでも時間帯が異なるクラスもあります。

ここに問題があります:
テーブルビュー (NSString に保存されている) からの教師の選択と、(NSString に保存されている) 期間に基づいて、教えられているクラスの名前を取得する必要があります。

例: Bob Smith at 8 AMを選択すると、代数を教えていることが返されます。

その結果を文字列にエクスポートする必要がありますが、それは難しいことではありません。

これは、この Objective-C が plist からテーブルを選択的に入力するのと同じ一般的な考え方です。キーが等しい が2つのキーをチェックしている場合、そのコードは機能していません。

私はstackoverflowや他のサイトを広範囲に調べましたが、良い結果は得られませんでした.

あなたの助けに感謝します。あなたたち最高。

編集: 詳細
これは私の didSelectRowAtIndexPath にあります

NSArray *listOfClasses = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"periodTchrCls" ofType:@"plist"]];

NSPredicate *pred = [NSPredicate predicateWithFormat:@"Teacher == %@", cellText];
NSArray *testFilter = [listOfClasses filteredArrayUsingPredicate:pred];

NSLog(@"This is the test %@", testFilter);

「cellText」は先生の名前の選択です。
plist は正常にロードされています。
ログが表示されます

This is the test ( lots of space      )

ご協力いただきありがとうございます。

4

1 に答える 1

0

結局のところ、私は答えを見つけました。

主な隠れた問題は、教師の名前にゴースト スペースが追加されているか、plist のいずれかでミドル ネームのイニシャルの後にピリオドがなかったことです。

ご協力いただきありがとうございます。

これが欲しい人のための私のコードです。

NSArray *listOfClasses = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"periodTchrCls" ofType:@"plist"]];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(Teacher == %@) AND (Period == %@)", cellText, testLabel.text];

NSArray *filter = [listOfClasses filteredArrayUsingPredicate:predicate];

NSString *nameFromArray = [NSString stringWithFormat:@"%@", [filter valueForKey:@"ClassName"]];
于 2013-07-09T20:34:15.283 に答える