【问题标题】:Core Data Fetch Request Variable in Xcode 4Xcode 4 中的核心数据获取请求变量
【发布时间】:2011-06-07 19:03:26
【问题描述】:

如何在 Xcode 4 的核心数据中向获取请求中添加变量?没找到。

【问题讨论】:

标签: ios core-data


【解决方案1】:

从下拉列表中选择Expression,并在替换变量前使用$ 输入表达式(在下面的示例中为NAME)。即使替换变量的值是字符串,请确保不要将变量放在引号之间,否则替换将不起作用。

在您的代码中,您指的是这样的 fetch 谓词(XCode 4.4 及更高版本):

NSManagedObjectModel* model = [[context persistentStoreCoordinator] managedObjectModel];
NSFetchRequest* request = [model fetchRequestFromTemplateWithName:templateName
                                            substitutionVariables:@{@"NAME" : name}];
NSError* error = nil;
NSArray* results = [context executeFetchRequest:request error:&error];

【讨论】:

  • 啊。这里的关键是您不要将 $ 放在 substitutionVariables 字典中的名称之前。
  • 在 Xcode 9 中,您需要选择自定义谓词而不是表达式
【解决方案2】:

Apple 在最新的 XCode 中再次移动了它。要在 Core Data 编辑器的 Fetch Requests 中使用变量,您必须使用“表达式”类型并手动输入:

数据 == $DATA

(在这个表达式中,$DATA 是变量)。

【讨论】:

  • 代码示例?这是在 XCode Core Data 编辑器的 Fetch Request 字段中完成的...
【解决方案3】:

如果通过变量你的意思是传递一个值到一个获取请求,所以你分隔请求?然后你要做的就是声明一个 NSPredicate。

类似这样的:

NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"name" inManagedObjectContext:context];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(attribute == %@)", value];
[request setEntity:entity];
[request setPredicate:predicate];
NSError *error;
NSArray *results = [context executeFetchRequest:request error:&error];
[request release];

【讨论】:

  • 我在核心数据编辑器中创建了一个获取请求。曾经是您右键单击谓词,它可以让您在其中放置一个变量。去哪儿了?
  • 要通过编辑器来完成,如果将右下角的编辑器样式更改为列表会更容易。这样,您将在左侧的实体列表中看到所有实体,您所要做的就是单击感兴趣的实体并将您的 fetch 属性添加到相应的部分中。
  • 我不确定你在说什么。我尝试了不同的编辑器样式,但仍然找不到将变量添加到我的 Fetch Request 的方法。
【解决方案4】:

您可能已经找到了解决方案,但我花了一些时间,它可能会节省其他人的时间,所以这里是:the apple documentation 解释它。

【讨论】:

  • 更精确的位置是“右手边”下的here。但是在空字段上“ctrl+click”的指令不会导致帮助页面显示上下文菜单(在 XCode 4.2.1 中)
猜你喜欢
  • 2011-10-29
  • 2018-02-11
  • 2019-11-06
  • 2013-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多