【问题标题】:how to implement that in core data如何在核心数据中实现它
【发布时间】:2011-03-24 15:07:10
【问题描述】:

在 SQL 中我们使用以下子句

其中 studentName like '%a' and StudentID = 1

如何在目标 c 和核心数据中使用 setpredicate 进行 fetchrequest

我只有名称@“a”和ID @“1”的两个输入部分

最好的问候

【问题讨论】:

标签: iphone objective-c core-data


【解决方案1】:
【解决方案2】:

它与 contains[cd] 一起使用,但我想要 知道如果我传递了字符串怎么办 为空,只想按 ID 搜索

通常,您不会在 fetch 谓词中使用空字符串,因为核心数据会尝试匹配空字符串。相反,您应该针对不同的情况创建不同的获取请求。获取请求是轻量级对象,可以存储在数组(甚至数据模型本身)中。

如果是这种情况,您将测试空字符串,如果为真,则使用仅查找 StudentID 的提取谓词。

一般来说,尽量避免用 SQL 术语来思考 Core Data。这很自然,但很危险。核心数据不是 SQL。实体不是表格。对象不是行。列不是属性。 Core Data 是一个对象图管理系统,它可能会也可能不会持久化对象图,并且可能会或可能不会在幕后使用 SQL 来做到这一点。试图用 SQL 术语来思考 Core Data 会导致您完全误解 Core Data 并导致很多痛苦和浪费时间。

【讨论】:

    【解决方案3】:

    我同意 TechZen 的观点,您应该从对象的角度考虑核心数据,而不是支持 sql。 CD 使用 SQL 作为实现细节,而不一定是定义特性。

    【讨论】:

      【解决方案4】:

      这是来自开发者库的示例

      Creating Fetch Request Templates Programmatically

      基本上它看起来像这样使用谓词...

      NSManagedObjectModel *model = <#Get a model#>;
      NSFetchRequest *requestTemplate = [[NSFetchRequest alloc] init];
      NSEntityDescription *publicationEntity =
          [[model entitiesByName] objectForKey:@"Publication"];
      [requestTemplate setEntity:publicationEntity];
      
      NSPredicate *predicateTemplate = [NSPredicate predicateWithFormat:
          @"(mainAuthor.firstName like[cd] $FIRST_NAME) AND \
              (mainAuthor.lastName like[cd] $LAST_NAME) AND \
              (publicationDate > $DATE)"];
      [requestTemplate setPredicate:predicateTemplate];
      
      [model setFetchRequestTemplate:requestTemplate
          forName:@"PublicationsForAuthorSinceDate"];
      [requestTemplate release];
      

      因此,通过查看您可能会喜欢这样的事情

      NSPredicate *predicateTemplate = [NSPredicate predicateWithFormat:
              @"(mainAuthor.firstName like[cd] $FIRST_NAME) AND \
                  (mainAuthor.lastName like[cd] $LAST_NAME) AND \
                  (publicationDate > $DATE)"];
          [requestTemplate setPredicate:predicateTemplate];
      

      希望这有助于我目前正在我的项目中设置核心数据,并且整个上午都在阅读这些内容。

      【讨论】:

        猜你喜欢
        • 2021-01-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-08
        相关资源
        最近更新 更多