gpt4 book ai didi

iphone - 将核心数据的属性的所有值加载到数组中

转载 作者:行者123 更新时间:2023-12-03 21:11:15 25 4
gpt4 key购买 nike

我有一个属性“term”,它是我的核心数据“Event”中的 NSString。加载 TableView 时,我希望将“name”的所有值加载到数组中。

我使用了代码

- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath {
Event *event = nil;
event = [fetchedResultsController objectAtIndexPath:indexPath];
if(searching){
cell.textLabel.text = [copyListOfItems objectAtIndex:indexPath.row];
}else{
if(event.term){
[listOfItems addObject:event.term];
}
cell.textLabel.text = event.term;
cell.detailTextLabel.text = event.definition;
}
}

问题是所有术语都没有加载到 NSMutableArray listOfItems 中。当表格单元格滚动到底部时加载它。

如何将 core data 中“term”的所有内容加载到数组 listOfItems 中。

任何帮助将不胜感激。

最佳答案

您很可能对核心数据的理解是错误的。核心数据不是数据库。它是一个恰好保存在数据库中的对象图。话虽如此,您的问题最好问为“如何加载实体“事件”的所有实例并访问其术语属性”。

为此,您需要针对不带谓词的“Event”实体构建并执行 NSFetchRequest

NSManagedObjectContext *moc = ...;
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"Event" inManagedObjectContext:moc]];
NSError *error = nil;
NSArray *events = [moc executeFetchRequest:request error:&error];
NSAssert2(events != nil && error == nil, @"Error fetching events: %@\n%@", [error localizedDescription], [error userInfo]);

从这里您可以使用“KVC”来检索名称属性的数组:

NSArray *namesArray = [events valueForKey:@"name"];

这将产生一个仅填充该字符串的数组。

但是更好的问题是,如果要在表中显示所有内容,为什么还需要数组? NSFetchedResultsController 已经为您检索到了所有“事件”实体;它只是绑定(bind)到表的显示。你的目标是什么?

更新

Thank You very much for the detailed answer Mr Marcus... My goal is to search a particular "term" from the core data using search bar. Is there any better method for this to do?

是的,而且这个问题有很多解决方案。您可以使用现有的 NSFetchedResultsController 使用其 -fetchedObjects 属性访问所有结果。从那里,您可以通过使用 -filteredArrayUsingPredicate: 对数组应用 NSPredicate 来获取过滤数组,然后您可以在搜索结果中使用该数组。

如果您在 SO 上搜索 Core Data 和 UISearchDisplayController,我怀疑您会找到很多结果和建议。

关于iphone - 将核心数据的属性的所有值加载到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3183051/

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