[<__NSCFDictionary 0x7fdf8a926250> valueForUndefinedKey:]:此 class 与键 HName 的键值编码不兼容
[<__NSCFDictionary 0x7fdf8a926250> valueForUndefinedKey:]: this class is not key value coding-compliant for the key HName
大家好我有一个字典数组,我想从中查找酒店名称但一直出现此错误
[<__NSCFDictionary 0x7fdf8a926250> valueForUndefinedKey:]: this class
is not key value coding-compliant for the key 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";
}
尝试以下格式字符串:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF['@HName'] CONTAINS %@",
searchHotelNameString];
或
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF['@HName'] LIKE %@",
[[@"*" stringByAppendingString:searchHotelNameString] stringByAppendingString:@"*"]];
如果使用 like
运算符,则必须向 searchHotelNameString
添加通配符。
编辑:
如果你不使用正则表达式,我建议使用 ==
而不是 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);
大家好我有一个字典数组,我想从中查找酒店名称但一直出现此错误
[<__NSCFDictionary 0x7fdf8a926250> valueForUndefinedKey:]: this class is not key value coding-compliant for the key 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";
}
尝试以下格式字符串:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF['@HName'] CONTAINS %@",
searchHotelNameString];
或
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF['@HName'] LIKE %@",
[[@"*" stringByAppendingString:searchHotelNameString] stringByAppendingString:@"*"]];
如果使用 like
运算符,则必须向 searchHotelNameString
添加通配符。
编辑:
如果你不使用正则表达式,我建议使用 ==
而不是 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);