ios - 如何仅比较文本中选定的字符串与 objective-c 中的给定输入

标签 ios objective-c nspredicate string-search

我知道这个问题听起来很老套。我找不到更好的表达方式,所以我会花时间解释我正在努力解决的问题。

我有一个从用户那里获取输入的 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 是我的输入。

最佳答案

首先,您永远不会知道用户输入是否有错字。

但是您可以做的是在比较两个字符串之前,您可以对给定的字符集进行一些修整。 NSString 类中有一个方法叫做:

- (NSString *)stringByTrimmingCharactersInSet:(NSCharacterSet *)set

如果你想摆脱 .或 - 字符,您需要在字符集中指定它们。然后,您可以比较两个字符串。

关于ios - 如何仅比较文本中选定的字符串与 objective-c 中的给定输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23303479/

相关文章:

ios - 在汽车显示中显示播放列表和其他项目

swift - NSPredicate 通过多个字符串进行过滤

ios - 需要保持点击状态以选择它

在自动布局的情况下,IOS scrollview 不明确的可滚动内容高度

ios - 以编程方式将 UIBarButtonItem 添加到 UITabBarController 内的所有导航 View Controller

ios - UITableView 选定的单元格分隔符未在 iOS 7.1 中显示

objective-c - 以编程方式检测已安装卷的连接类型

ios - PIN 更改后连接到外围设备

ios - 如何检查有效网址?

ios - 核心数据获取请求关系属性谓词