gpt4 book ai didi

iPhone核心数据: NSFetchRequest with distinct properties and alphabet sections

转载 作者:行者123 更新时间:2023-12-03 20:01:39 25 4
gpt4 key购买 nike

我正在尝试创建一个 NSFetchRequest 来为 UITableView 生成结果。

它应该找到所有出现的 NSString 属性并将它们分成字母部分(“A”、“B”、“C”等)

我在 NSManagedObject 类上设置了一个方法来返回属性的第一个字母:

- (NSString *)entrantFirstLetter
{
[self willAccessValueForKey:@"entrantFirstLetter"];
NSString *returnString = [self.entrant substringToIndex:1];
[self didAccessValueForKey:@"entrantFirstLetter"];
return returnString;
}
  • 我将“sectionNameKeyPath”设置为@“entrantFirstLetter”,效果非常好

  • 但是,我现在需要将 returnsDistinctResults 设置为 YES

  • 但是,returnsDistinctResults 仅在设置了propertiesToFetch 时才有效,因此

  • 我将propertiesToFetch 设置为“entrant”(我感兴趣的属性)

  • 但是,为了让propertiesToFetch正常工作,resultType必须是NSDictionaryResultType,所以

  • 我将 resultType 设置为 NSDictionaryResultType

  • 但是,这个 resultsType 意味着我的 @"entrantFirstLetter"的“sectionNameKeyPath”不再有效。

那么,您认为答案是将“entrantFirstLetter”添加到propertiesToFetch 中吗?但因为它不是 NSEntityDescription 上的属性,所以我不能!

我想要做的就是将核心数据中的字符串列表排序为字母表部分,并且没有重复项。我可以让每个部分独立工作,但是让它们一起工作依赖于看似无限的依赖循环,而且我找不到一种方法让它们全部工作。

任何想法将不胜感激,

拉塞尔。

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Project" inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
NSDictionary *properties = [entity propertiesByName];
NSArray *propertiesToFetch = [NSArray arrayWithObject:[properties objectForKey:@"entrant"]];
[fetchRequest setResultType:NSDictionaryResultType];
[fetchRequest setPropertiesToFetch:propertiesToFetch];
[fetchRequest setReturnsDistinctResults:YES];
NSSortDescriptor *entrantDescriptor = [[NSSortDescriptor alloc] initWithKey:@"entrant" ascending:YES];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:entrantDescriptor]];

NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:managedObjectContext sectionNameKeyPath:@"entrantFirstLetter" cacheName:nil];

最佳答案

您正在尝试复制NSFetchResultsController的默认部分行为。

相反,只需将 sectionNameKeyPath: 设置为 entrant,FRC 就会为您创建这些部分,而无需您付出更多努力。

关于iPhone核心数据: NSFetchRequest with distinct properties and alphabet sections,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2397243/

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