NSFetchRequest:提取谓词为真的对象

问题描述 投票:1回答:1

我有以下内容。我想获取谓词为true的Session对象。

我这样做正确吗?以及如何初始化/定义indexPath,因为它未被识别。

NSDate * searchDate = [formatter dateFromString:dateString];
NSFetchRequest *request = [[NSFetchRequest alloc]init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Session" inManagedObjectContext:self.managedObjectContext];
[request setEntity:entity];
NSPredicate * predicate1 = [NSPredicate predicateWithFormat:@" timeStamp == %@ ", searchDate];
[request setPredicate: predicate1];
[request setFetchBatchSize:20];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"timeStamp" ascending:NO];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[request setSortDescriptors:sortDescriptors];
NSError *error = nil; 
NSArray *array = [managedObjectContext executeFetchRequest:request error:&error];

SessionViewController *sessionViewController = [[SessionViewController alloc] initWithNibName:@"SessionViewController" bundle:nil];
self.selectedSession = (Session *)[array objectAtIndexPath:indexPath];

sessionViewController.selectedSession = self.selectedSession;

[self.navigationController pushViewController:sessionViewController animated:YES];
[sessionViewController release];
[sortDescriptor release];
[request release];
[sortDescriptors release];
ios objective-c cocoa-touch core-data nspredicate
1个回答
0
投票

然后,indexPath变量通常从表视图delegate / datasource回调中提供。如果您使用的是UITableView,则应将您提供的最后两行代码放入以下方法之一。

- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath

其他行应位于使数据显示在表视图中的方法中。

-(NSArray*)sessionData
{
    if(!_sessionData)
    {
        //FetchRequest stuff
        NSError *error = nil; 
        _sessionData = [managedObjectContext executeFetchRequest:request error:&error];
        //Error checking/logging
    }
    return _sessionData;
}

现在下面的@“ timeStamp ==%@”仅在时间戳记为精确到毫秒的日期时才有效。如果这是您想要的,请使用日期范围@“ timeStamp> =%@ AND timeStamp <=%@”。

注意:如果发布所有代码,则缺少多个对象的版本

request sortDescriptor sortDescriptors

© www.soinside.com 2019 - 2024. All rights reserved.