将for循环中的NSArray与给定输入与nspredicate进行比较

时间:2014-04-26 10:27:42

标签: ios objective-c cocoa-touch nspredicate string-comparison

我真的不知道如何问这个,因为提出问题标题真的很痛苦,但我希望你能帮助我

我有一个小伙子。

我把它读成了一个nsarray

NSArray *arrayOfPlist = [[NSArray alloc] initWithContentsOfFile:path];

此pList采用此格式。

<array>
    <dict>
                <key>category</key>
        <string>desert</string>
        <key>numberOfPerson</key>
        <string>3</string>
        <key>recipeImage</key>
        <string>asdasd.jpg</string>
        <key>time</key>
        <string>15</string>
        <key>recipeName</key>
        <string>asd asdad</string>
        <key>recipeDetail</key>
        <string>asdasd</string>
        <key>recipeIngredients</key>

用户将输入输入到textField。

我将其存储为searchText

我使用NSPredicate查看RecipeIngredients是否包含它。

此时我遇到了麻烦

当我尝试使用此数组时

        NSArray*        haves = [recipeIngredientsOfOneRecipeString componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@","]];

它给了我这个错误[<__NSCFString 0x109291950> valueForUndefinedKey:]: this class is not key value coding-compliant for the key recipeIngredients.'

另一件事是我无法想象用给定输入检查所有recipeIngredients的正确方法。

我尝试在每次返回true时添加一个bool谓词i增加,当它的计数与haves.count相同时我添加了它但是这也没有用。

我正在杀死自己以寻找解决这些问题的方法,而且我的想法就不存在了。

需要一个新的视角。

1 个答案:

答案 0 :(得分:1)

您可以使用以下代码

枚举整个plist文件以匹配用户输入
NSArray* arrOfPlist = [[NSArray alloc] initWithContentsOfFile:path];
    NSString* strMatch;//user Input
    for (NSDictionary* dict in arrOfPlist)
    {
        for (id key in dict)
        {
            if ([[dict objectForKey:key]isEqualToString:strMatch])
            {
                //user search matches do whatever code you want here

                break;
            }
        }
    }