大家好我有一个字典数组,我希望找到一个酒店名称,但不断收到此错误
[< __ NSCFDictionary 0x7fdf8a926250> valueForUndefinedKey:]:这个类 密钥HName不符合密码值编码。
我的代码是:
searchHotelNameString = _txtHotelSearch.text;
_resultObjectsArray = [NSArray array];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"@HName like %@",
searchHotelNameString];
_resultObjectsArray = [self.arrHotelResults filteredArrayUsingPredicate:predicate];
我的字典是:
{
"@HIndex" = 5;
"@HName" = "XYZ Plaza Hotel Dubai";
"@Lattitude" = "25.2174";
}
答案 0 :(得分:0)
尝试以下格式字符串:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF['@HName'] CONTAINS %@",
searchHotelNameString];
或者
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF['@HName'] LIKE %@",
[[@"*" stringByAppendingString:searchHotelNameString] stringByAppendingString:@"*"]];
如果您使用searchHotelNameString
运营商,则必须向like
添加通配符。
修改强>
如果您不使用正则表达式,我建议您使用==
而不是LIKE
:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF['@HName'] == %@",
searchHotelNameString];
这是我的测试代码:
NSString *searchHotelNameString = @"Taj Palace";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF['@HName'] == %@",
searchHotelNameString];
NSArray *arrHotelResults = @[
@{@"@HIndex" : @5, @"@HName" : @"XYZ Plaza Hotel Dubai", @"@Lattitude" : @25.2174},
@{@"@HIndex" : @5, @"@HName" : @"Beijing", @"@Lattitude" : @25.2174},
@{@"@HIndex" : @5, @"@HName" : @"Xiamen", @"@Lattitude" : @25.2174},
@{@"@HIndex" : @5, @"@HName" : @"Wuhan", @"@Lattitude" : @25.2174},
@{@"@HIndex" : @5, @"@HName" : @"Taj Palace", @"@Lattitude" : @25.2174}
];
NSArray *resultObjectsArray = [arrHotelResults filteredArrayUsingPredicate:predicate];
NSLog(@"%@", resultObjectsArray);