gpt4 book ai didi

iphone - 如何获取核心数据中的不同值?

转载 作者:行者123 更新时间:2023-12-03 18:24:26 25 4
gpt4 key购买 nike

所以在查看Core Data Snippets时,我找到了以下代码:

...
[request setEntity:entity];
[request setResultType:NSDictionaryResultType];
[request setReturnsDistinctValues:YES];
[request setPropertiesToFetch:[NSArray arrayWithObject:@"<#Attribute name#>"]];

// Execute the fetch
NSError *error;
id requestedValue = nil; // WTF? This isn't defined or used anywhere
NSArray *objects = [managedObjectContext executeFetchRequest:request error:&error];
if (objects == nil) {
// handle the error
}

这很棒,看起来非常适合我的需要......但是如何实际使用它呢?我假设因为它返回字典,所以我需要一个键来获取值 - 但是定义的键在哪里?那是“id requestsValue = nil”行吗?如果是这样,“requestedValue”如何成为关键? Xcode 向我发出有关“requestedValue”声明中未使用变量的编译器警告。我觉得我在这里错过了一些东西。

预先感谢您提供的任何帮助。

最佳答案

requestedValue 没什么,显然没有被使用(也许它是其他一些示例的一部分,被剪切并粘贴到此示例代码中——谁知道呢)。你可以忽略它。

字典的键与您获取并在模型中定义的属性相同。因此,例如,如果您有一个定义了三个属性(姓名、年龄、电话号码)的人员实体,并且您仅请求姓名,那么这将是您的字典中唯一包含数据的键。所以:

[request setEntity:entity]; 
[request setResultType:NSDictionaryResultType];
[request setReturnsDistinctResults:YES];
[request setPropertiesToFetch:[NSArray arrayWithObject:@"name"]];

// Execute the fetch
NSError *error;
NSArray *objects = [managedObjectContext executeFetchRequest:request error:&error];
if (objects == nil) {
abort();
}
for( NSDictionary* obj in objects ) {
NSLog(@"Person: %@", [obj objectForKey:@"name"]);
}
// ...

因此,如果您的数据存储中有 5 个人,分别名为 Bob、Sally、Joe、Freida 和 Sue,您会看到这些名字被打印出来。如果您想使用任何其他属性(例如年龄),则必须将其添加到您在 setPropertiesToFetch: 中设置的数组中。

但是,在大多数情况下,最好只是检索托管对象。该对象将会出错,因此您甚至不会将属性带入内存,除非您实际访问它们。另外,如果您想对对象进行更改,您可以将它们保存到存储中(使用托管对象)。

关于iphone - 如何获取核心数据中的不同值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2785844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com