0

在我的 iOS 应用程序中,我正在将教师列表从 plist 加载到 tableview 中,效果很好。

在另一个plist中,我有一个根数组>字典>四个字符串的层次结构,然后是更多具有相同字符串的字典。这是针对学校的,所以键是“ClassName”、“Period”、不相关的数字和“Teacher”名称。每位老师每天都有多节课,有些课名相同,但上课时间不同。

所以这里的问题是:
根据从 tableview 中选择的老师(保存在 NSString 中),以及时间段(保存在 NSString 中),我需要获取所教课程的名称。

示例:我在8 AM选择Bob Smith,它返回他正在教Algebra

然后我需要将该结果导出到一个字符串,这不是困难的部分。

这与此 Objective-C 从 plist 选择性填充表的总体思路相同;如果键等于 但检查两个键,并且该代码对我不起作用。

我在 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

事实证明,我找到了答案。

主要的隐藏问题是,老师的名字要么添加了一个幽灵空格,要么在其中一个列表中的中间首字母之后没有句号。

谢谢你的帮助。

这是我的代码给任何想要它的人。

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 回答