【问题标题】:Facing issue with NSPredicateNSPredicate 面临的问题
【发布时间】:2013-06-07 11:50:51
【问题描述】:

在我下面的项目中是字典,我有一个字典列表,我试图根据谓词获得相同的值,但我没有得到值。

    NSPredicate* searchPredicate = [NSPredicate predicateWithFormat:@"(%K CONTAINS[c] %@)",@"**equipArray.equipmentName**",textField.text];

    NSLog(@"searchPredicate %@",searchPredicate);

    NSArray* searchList = [list filteredArrayUsingPredicate:searchPredicate];

但我无法获取列表。谁能帮帮我?

    {
    equipArray =         (
                    {
            equipmentIcon = "outside.png";
            equipmentName = Outside;
        },
                    {
            equipmentIcon = "steps.png";
            equipmentName = Steps;
        },
                    {
            equipmentIcon = "partner.png";
            equipmentName = Partner;
        }
    );
    exId = 4;
    exeName = "Fireman Carry";
    exerciseAudioCue = "DG Fighting Fit-exercise_audio_test.mp3";
    exerciseDescription = "Proin gravida nibh vel velit auctor aliquet. Aenean sollicitudin, lorem quis bibendum auctor, nisi elit consequat ipsum, nec sagittis sem nibh id elit. Duis sed odio sit amet nibh vulputate cursus a sit amet mauris. Morbi accumsan ipsum velit. Nam nec tellus a odio tincidunt auctor a ornare odio. Sed non  mauris vitae erat consequat auctor eu in elit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Mauris in erat justo. Nullam ac urna eu felis dapibus condimentum sit amet a augue. Sed non neque elit. Sed ut imperdiet nisi. Proin condimentum fermentum nunc. Etiam pharetra, erat sed fermentum feugiat, velit mauris egestas quam, ut aliquam massa nisl quis neque. Suspendisse in orci enim.";
    exerciseType = Stamina;
    imageThumbNail = "firemancarry_thumbnail.png";
    longVideoName = long;
    shortVideoName = small;
}

【问题讨论】:

  • 不应该**equipArray.equipmentName** 只是equipArray.equipmentName 吗?为什么所有这些星号?
  • 是的,它只是equipArray.equipmentName 在这里粘贴时我尝试保持粗体,所以得到了我正在使用equipArray.equipmentName 的那些额外字符

标签: ios nsarray nspredicate


【解决方案1】:

如果您想查找equipArray 中的 any equipmentName 包含 给定字符串,使用:

[NSPredicate predicateWithFormat:@"ANY %K CONTAINS[c] %@", @"equipArray.equipmentName", textField.text];

("CONTAINS" 用于字符串比较,而不是检查数组中是否包含。)

【讨论】:

  • @kiri:textField.text的内容是什么?
  • 点击搜索按钮时,内容用于搜索字段。就像@"Out" 表示字典中的“外侧”
  • NSPredicate* searchPredicate = [NSPredicate predicateWithFormat:@"(%K CONTAINS[c] %@) OR (%K CONTAINS[c] %@) OR (%K CONTAINS[c] %@) )",@"exeName",textField.text,@"exerciseType",textField.text,@"equipArray.equipmentName",textField.text];这是用于其他项目的实际谓词,我得到了很好的结果
【解决方案2】:

使用这个谓词:

[NSPredicate predicateWithFormat:@"equipArray.equipmentName =[cd] %@", textField.text];

【讨论】:

    【解决方案3】:

    试试这样,

    NSPredicate* searchPredicate = [NSPredicate predicateWithFormat:@"(equipArray.equipmentName CONTAINS[c] %@)",textField.text];
    

    【讨论】:

      【解决方案4】:
       NSPredicate *searchPredicate=[NSPredicate predicateWithFormat:@"ANY %K == [cd] %@", @"equipArray.equipmentName", @"steps"];
      

      【讨论】:

        猜你喜欢
        • 2020-07-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-29
        • 1970-01-01
        • 1970-01-01
        • 2021-10-02
        相关资源
        最近更新 更多