Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c Xcode NSPredicate_Objective C_Arrays_Sorting - Fatal编程技术网

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];你是说像这样吗?