gpt4 book ai didi

ios - NSFetchedResultsController仅返回一个部分

转载 作者:行者123 更新时间:2023-12-01 16:43:38 25 4
gpt4 key购买 nike

由于某种原因,无论数据模型是什么样,我的方法调用-numberOfSectionsInTableView总是返回一个部分。

这是来自TableVIewController.m的一些代码片段。如有需要,请随时询问更多

self.sortDesciptor = [[NSSortDescriptor alloc] initWithKey:@"weaponData" ascending:YES];
self.sortDescriptors = [NSArray arrayWithObjects:self.sortDesciptor, nil];
self.sortSectionKey = @"weaponData";

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
NSLog(@"number of sections:%lu",(unsigned long)[[_fetchedResultsController sections] count]);
return [[self.fetchedResultsController sections] count];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
id <NSFetchedResultsSectionInfo> sectionInfo = [[self.fetchedResultsController sections] objectAtIndex:section];
NSLog(@"%lu", (unsigned long)[sectionInfo numberOfObjects]);
return [sectionInfo numberOfObjects];
}

-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
id <NSFetchedResultsSectionInfo> sectionInfo = [[self.fetchedResultsController sections] objectAtIndex:section];
return [[[sectionInfo objects] objectAtIndex:section] weaponData];
}

- (NSFetchedResultsController *)fetchedResultsController {
if (_fetchedResultsController != nil)
{
return _fetchedResultsController;
}
sTCAppDelegate *appDelegate =[[UIApplication sharedApplication] delegate];
NSManagedObjectContext *context =[appDelegate managedObjectContext];

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"TargetData" inManagedObjectContext:context];

[fetchRequest setEntity:entity];
[fetchRequest setFetchBatchSize:0];

if (self.sortMethod == 0){
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"timeStamp" ascending:NO];
NSArray *sortDescriptors = [NSArray arrayWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
}
else{
[fetchRequest setSortDescriptors:self.sortDescriptors];
}

NSFetchedResultsController *aFetchedRequestsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:context sectionNameKeyPath:self.sortSectionKey cacheName:nil];
aFetchedRequestsController.delegate = self;
self.fetchedResultsController = aFetchedRequestsController;

NSError *error = nil;

if (![self.fetchedResultsController performFetch:&error])
{
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}

return _fetchedResultsController;
}

在本示例的代码中,请考虑如果在我的“weaponData”实体中有两个“weaponData”对象,将会发生什么情况。假设第一个被命名为Sniper Rifle,第二个被命名为Assault Rifle。这将创建两个部分,其中一个名为Sniper Rifle,一个名为Assault Rifle。实际上发生的是,我只得到1个部分,并且根据首先进入对象上下文的任何对象对其进行命名。

任何线索如何解决这个问题?

最佳答案

您传递的是排序描述符,而不是keyPath。只需传入@“weaponData”作为sectionNameKeyPath

关于ios - NSFetchedResultsController仅返回一个部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21961243/

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