我知道这个问题听起来很老套。我找不到更好的表达方式,所以我会花时间解释我正在努力解决的问题。
我有一个从用户那里获取输入的 iPhone 应用程序。我有一个 plist(我将很快将其转换为在线数据库)我目前正在做的是这个。我将输入字符串与 plist 中项目的成分部分进行比较。
这是 plist 格式
<array>
<dict>
<key>category</key>
<string>desert</string>
<key>numberOfPerson</key>
<string>3</string>
<key>recipeImage</key>
<string>asd.jpg</string>
<key>time</key>
<string>15</string>
<key>recipeName</key>
<string>Puding</string>
<key>recipeDetail</key>
我将输入与recipeIngredients进行比较。但是我的代码所做的不是我需要的。如果比较为真,我只会列出我的plist中包含输入成分的每个项目。我可以过滤选定的食谱,但我想要的是:除非与输入和成分完全匹配,否则我不想展示它。
问题是这样的。我的食谱配料是这样的:1 勺糖、1 勺盐、100 克鸡肉。
用户输入诸如盐、糖之类的输入。鸡肉,所以我无法完全比较它。它永远不会相同,所以我不能展示任何东西。
我怎样才能做到这一点。
我愿意接受任何建议。
这就是我比较的方式
results = [arrayOfPlist filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
NSDictionary *_dataRow = (NSDictionary *)evaluatedObject;
return ([[[_dataRow valueForKey:@"recipeIngredients"] lowercaseString] rangeOfString:[searchText lowercaseString]].location != NSNotFound);
}]];
searchText 是我的输入。