我使用NSPredicate
进行过滤,名称中有单引号。
我尝试使用
NSString *keywordWithBackslashedApostrophes = [keyword stringByReplacingOccurrencesOfString:@"'" withString:@"\\'"];
但是我没有比较,因为我看到它正在将Audit's
与Audit\
进行比较,因此无法进行比较。
我从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代码而不是撇号,而且它没有进行比较
答案 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";
}
)