【问题标题】:predicate for querying a substring of a string from coredata用于从 coredata 查询字符串的子字符串的谓词
【发布时间】:2012-10-10 02:19:27
【问题描述】:

在我的项目中,我在一个实体中有一组属性。其中一个是作为字符串的路径。我想要在路径中以我的字符串作为子路径的所有记录。

示例: 路径:/var/mobile/Applications/C4ECC129-36D2-4428-8BB0-6B1F4C971FC1/Library/Caches/Packages/1000

Mystring:库/缓存/包/1000

我尝试使用 Like 并包含如下但失败了。

[NSPredicate predicateWithFormat:@"bookPath like[c] '%%%@'",Mystring];
[NSPredicate predicateWithFormat:@"bookPath Contains[cd] '%@'",Mystring];

有人可以帮助编写谓词来获取那些包含 mystring 的记录吗?

真的帮了我很多。

提前发送

【问题讨论】:

    标签: ios sqlite core-data nspredicate nsfilemanager


    【解决方案1】:

    你需要有这样的谓词

    [fecthRequest setPredicate:[NSPredicate predicateWithFormat:@"bookPath endswith[cd] %@", myString]];
    

    或者这个

    [fecthRequest setPredicate:[NSPredicate predicateWithFormat:@"bookPath contains[cd] %@", myString]];
    

    没有结果是由于您的%@ 周围有单引号。来自文档(Dynamic Property Names):

    字符串变量用引号括起来时 使用 %@

    替换为格式字符串

    关于谓词我真的建议使用第一个,如果你正在寻找的子路径总是在原始路径的最后部分。

    关于使用谓词,我真的建议阅读String Comparisons

    希望对您有所帮助。

    【讨论】:

      【解决方案2】:

      试试这个:

      [NSPredicate predicateWithFormat:@"%K contains %@", @"bookPath", Mystring];
      

      【讨论】:

      • 我试过但遇到了崩溃,日志为:作业似乎已崩溃:分段错误:11。如果您有任何想法,请帮忙
      猜你喜欢
      • 2013-11-22
      • 1970-01-01
      • 1970-01-01
      • 2012-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多