Objective c Xcode NSPredicate
我正在尝试过滤一组对象,如下所示:Objective c Xcode NSPredicate,objective-c,arrays,sorting,Objective C,Arrays,Sorting,我正在尝试过滤一组对象,如下所示: { "id": "0", "title": "Crucifix and sarcophagus of Ariberto da Intimiano", "categoryName": "COMMEMORATIVE MONUMENTS", "audioFile": "Crucifix-and-sarcophagus-of-Ariberto-da-Intimiano", "videoFile": null, "text
{
"id": "0",
"title": "Crucifix and sarcophagus of Ariberto da Intimiano",
"categoryName": "COMMEMORATIVE MONUMENTS",
"audioFile": "Crucifix-and-sarcophagus-of-Ariberto-da-Intimiano",
"videoFile": null,
"textFile": "Crucifix-and-sarcophagus-of-Ariberto-da-Intimiano",
"image": "content/0/Crucifix-and-sarcophagus-of-Ariberto-da-Intimiano_flow.jpg",
"numPictures": "1",
"didascalie": ["dida 1", "dida 2", "dida 3"],
"description": "Crucifix and sarcophagus of Ariberto da Intimiano",
"link": ""
},
{
"id": "1",
"title": "The sundial of Duomo",
"categoryName": "THE SUNDIAL",
"audioFile": "The-sundial-of-Duomo",
"videoFile": null,
"textFile": "The-sundial-of-Duomo",
"image": "content/1/The-sundial-of-Duomo_flow.jpg",
"numPictures": "2",
"didascalie": ["dida 1", "dida 2", "dida 3"],
"description": "The sundial of Duomo",
"link": ""
}
NSPredicate *key1Predicate = [NSPredicate predicateWithFormat:@"title == '%@'",_searchAZ.text];
_ArtWorksTableResults = [[_ArtWorksTable filteredArrayUsingPredicate:key1Predicate] mutableCopy];
NSLog(@"%i",_ArtWorksTableResults.count);
NSPredicate *key1Predicate = [NSPredicate predicateWithFormat:@"title == 'The sundial of duomo'"];
_ArtWorksTableResults = [[_ArtWorksTable filteredArrayUsingPredicate:key1Predicate] mutableCopy];
NSLog(@"%i",_ArtWorksTableResults.count);
执行搜索时,\u ArtWorksTableResults.count
始终为0
但是如果我写谓词而不是像这样使用搜索栏文本:
{
"id": "0",
"title": "Crucifix and sarcophagus of Ariberto da Intimiano",
"categoryName": "COMMEMORATIVE MONUMENTS",
"audioFile": "Crucifix-and-sarcophagus-of-Ariberto-da-Intimiano",
"videoFile": null,
"textFile": "Crucifix-and-sarcophagus-of-Ariberto-da-Intimiano",
"image": "content/0/Crucifix-and-sarcophagus-of-Ariberto-da-Intimiano_flow.jpg",
"numPictures": "1",
"didascalie": ["dida 1", "dida 2", "dida 3"],
"description": "Crucifix and sarcophagus of Ariberto da Intimiano",
"link": ""
},
{
"id": "1",
"title": "The sundial of Duomo",
"categoryName": "THE SUNDIAL",
"audioFile": "The-sundial-of-Duomo",
"videoFile": null,
"textFile": "The-sundial-of-Duomo",
"image": "content/1/The-sundial-of-Duomo_flow.jpg",
"numPictures": "2",
"didascalie": ["dida 1", "dida 2", "dida 3"],
"description": "The sundial of Duomo",
"link": ""
}
NSPredicate *key1Predicate = [NSPredicate predicateWithFormat:@"title == '%@'",_searchAZ.text];
_ArtWorksTableResults = [[_ArtWorksTable filteredArrayUsingPredicate:key1Predicate] mutableCopy];
NSLog(@"%i",_ArtWorksTableResults.count);
NSPredicate *key1Predicate = [NSPredicate predicateWithFormat:@"title == 'The sundial of duomo'"];
_ArtWorksTableResults = [[_ArtWorksTable filteredArrayUsingPredicate:key1Predicate] mutableCopy];
NSLog(@"%i",_ArtWorksTableResults.count);
\u ArtWorksTableResults.count
是1
,这是正确的
我做错了什么
我还尝试记录搜索栏文本,一切正常
我不明白为什么我直接在代码中写搜索键会起作用 在提供参数时,谓词格式不应包含引号:
[NSPredicate predicateWithFormat:@"title == %@",_searchAZ.text];
不需要额外的“符号”,它们是由格式化程序添加的
最后:
@"%K == '%@'"
This predicate checks whether the value of the key %K is equal to the string literal “%@“ (note the single quotes around %@). The key name %K is supplied at runtime as an argument to predicateWithFormat:.
非常感谢。我删除了引号,但执行搜索时数组仍然为空!我快疯了!您可能希望使用特定于字符串的比较,以便使其不区分大小写(
如[cd]
),而不是=
。同时检查\u searchAZ
是否实际连接。此外,确保\u searchAZ不是ninspredicate*key1Predicate=[redinscate predicateWithFormat:@](标题如[cd]@),\u searchAZ.text];你是说像这样吗?