gpt4 book ai didi

ios - 核心数据获取唯一属性

转载 作者:行者123 更新时间:2023-11-29 12:42:06 25 4
gpt4 key购买 nike

我有一个名为 Item 的核心数据对象,它有两个属性 identifiertype

Item
----

identifier
type (A/B)

可以有 2 个具有相同标识符但类型不同的项目。

我需要在一个条件下获取所有项目:
如果两个项目具有相同的标识符,则只显示 A 类型。

换句话说,我想确保获取的项目将具有唯一标识符,并且在多个项目具有相同标识符的情况下,将优先考虑类型为 A 的项目。

如果可能,我也不想使用 NSDictionaryResultType

最佳答案

您可以使用谓词从 Core Data 中获取数据以查找(或计数)具有标识符的对象(顺便说一句,不要使用id,它是 Cocoa 中的保留字),您可以按另一个属性排序,然后您可以将获取结果限制为单个项目。

这将为您提供您正在寻找的优先级。但是,我强烈建议不要以这种方式处理问题,而是编写您的创建代码以避免首先出现重复。

更新

我的意思是您不能“在一个条件下获取所有项目...”。您可以做的是获取每个项目(使用标识符),将获取限制为按类型排序的单个结果,这将为您提供结果。

如果您想要所有“a”类型的项目,那是可行的。

如果您想要所有项目并在内存中第二次传递时根据类型进行过滤,您可以这样做

你不能组合它们。

现在,如果你想获取每个项目,过滤它看起来像这样的类型:

NSManagedObjectContext *moc = ...;
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"MyEntity"];
[fetchRequest setFetchLimit:1];
[fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"identifier == %@", myIdentifier];

NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"type" ascending:YES];
NSArray *sortArray = [NSArray arrayWithObject:sort];
[fetchRequest setSortDescriptors:sortArray];

NSError *error = nil;
NSArray *results = [moc executeFetchRequest:fetchRequest error:&error];
if (!results) {
NSLog(@"Error: %@\n%@", [error localizedDescription], [error userInfo]);
abort();
}

id mySingleObject = [results lastObject];

注意:此代码是在浏览器中编写的,可能存在错误。

关于ios - 核心数据获取唯一属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24609654/

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