我正在开发一个自动填充文本字段,这件事发生了
NSString *substring = [NSString stringWithString:autocompleteTextField.text];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@" CityCode[c] contains %@ OR Zone[c] contains %@ ",substring,substring];
filteredarr =[[searchArray filteredArrayUsingPredicate:predicate] copy];
行
发生错误filteredarr = [[searchArray filteredArrayUsingPredicate:predicate] 复制];
filteredarr是一个数组 searcharray是一个采用json数据的数组
请帮帮我 提前致谢
答案 0 :(得分:1)
NSPredicate *predicate = [NSPredicate predicateWithFormat:@" CityCode[c] contains %@ OR Zone[c] contains %@ ",substring,substring];
您需要将[c]
(不区分大小写)放在保留字contains
之后,而不是key
=>
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"CityCode contains[c] %@ OR Zone contains[c] %@ ",substring,substring];
对于错误本身(消息不是很明确),我猜这就是为什么尝试使用CityCode
键在Zone
和c
上下标,得到nil,这就是为什么你得到一个setObject:forKey:
时出现nil错误(你不能在对象上放一个nil
值。)
对于习惯,我喜欢将保留的谓词单词放在大写中,如果它是一个保留字并且有一个“action”=>则更容易阅读。 CONTAINS[c]
,但这只是我的口味。