NSPredicate不处理单引号,因此不进行比较

时间:2013-12-24 05:02:14

标签: iphone objective-c nsdictionary nspredicate apostrophe

我使用NSPredicate进行过滤,名称中有单引号。

我尝试使用

 NSString *keywordWithBackslashedApostrophes = [keyword stringByReplacingOccurrencesOfString:@"'" withString:@"\\'"];

但是我没有比较,因为我看到它正在将Audit'sAudit\进行比较,因此无法进行比较。 我从NSDictionary获取了strTemp 但NSDictionary将其转换为utf-8代码 我尝试使用[NSPredicate predicateWithFormat:@"MeetingRoomType = %@",strTemp]

所以我无法将字符串与单引号进行比较,就像我从nsdictionary中获取它然后它自动转换为utf-8代码而stringByReplacingOccurrencesOfString:@"'" withString:@"\\'"]不进行比较。

请帮助是否有任何选项使用nspredicate与单引号或我只需要使用for循环,因为那时我将需要在所有地方更改

以下是字典

的代码
NSDictionary *dicTemp = [arrTemp lastObject];
[dicTemp setValue:@"Audit's" forKey:@"Meeting"];
[arrTemp addObject:dicTemp];

在谓词中我使用[[arrTemp objectAtIndex:i] valueForKey:@"Meeting"];

不是比较

我使用[NSPredicate predicateWithFormat:@"Meeting = %@",[[arrTemp objectAtIndex:i] valueForKey:@"Meeting"]]

当我调试时,我得到的是utf-8代码而不是撇号,而且它没有进行比较

1 个答案:

答案 0 :(得分:0)

您的问题与NSPredicate以外的问题有关。以下代码:

NSArray *array =
    @[
        @{
            @"Meeting" : @"Audit's"
        },
        @{
            @"Meeting" : @"Non-audit"
        }
    ];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"Meeting = %@", array[0][@"Meeting"]];

NSLog(@"array: %@", array);
NSLog(@"predicate: %@", predicate);
NSLog(@"filtered array: %@", [array filteredArrayUsingPredicate:predicate]);

输出:

2013-12-24 13:23:00.913 Untitled[2638:507] array: (
        {
        Meeting = "Audit's";
    },
        {
        Meeting = "Non-audit";
    }
)
2013-12-24 13:23:00.914 Untitled[2638:507] predicate: Meeting == "Audit's"
2013-12-24 13:23:00.915 Untitled[2638:507] filtered array: (
        {
        Meeting = "Audit's";
    }
)