正如标题所暗示的那样,我的.plist文件采用这种格式 - 我不知道如何标记它以便您阅读。 Stackoverflow不理解格式。
root (array)
Item 0 - Dict
numberOfPerson String
recipeName String
recipeIngredients String
Item 1 -Dict
NumberOfPerson String
...
我有一个用户的文本字段,用户将输入几个字符串。
我想查找每个项目的输入和recipeIngredients的匹配项。
当发现它时,我想在我实施的tableview中找到那个单元格。
我怎样才能做到这一点。
这是我到目前为止所尝试的
NSString *path = [[NSBundle mainBundle] pathForResource:@"recipes" ofType:@"plist"];
NSArray *arrayOfPlist = [[NSArray alloc] initWithContentsOfFile:path];
这结果没用,我不能使用objectForKey
for (int i=0; i<2; i++) {
recipeIngredientsArray = [[arrayOfPlist objectAtIndex:i] objectForKey:@"recipeIngredients"];
}
这对我没有帮助,或者我不能保持良好的isequl方法
感谢您的帮助。
答案 0 :(得分:0)
您有一系列要过滤的词典。看看使用indexesOfObjectsPassingTest:
。在数组上运行此命令并测试传递的字典以检查recipeIngredients
值的值。
NSIndexSet *indexes = [arrayOfPlist indexesOfObjectsPassingTest:^BOOL (NSDictionary *obj, NSUInteger idx, BOOL *stop) {
return [obj[@"recipeIngredients"] rangeOfString:input options:NSCaseInsensitiveSearch].location != NSNotFound;
}];
然后您可以使用indexes
查看是否有任何匹配并显示它们。或者,您可以使用filteredArrayUsingPredicate:
直接过滤数组:
NSArray *results = [arrayOfPlist filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"recipeIngredients CONTAINS[cd] %@", input]];
然后在表格视图中仅显示已过滤的结果。