标签: nsfetchrequest

核心数据崩溃:在实体中找不到Keypath项目

- (void)fetchResult
{
    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"Project" ascending:YES];

    [request setEntity:self.entityDescription];
    [request setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]];
    self.fetchResultController = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:nil];

    NSError *fetchError = nil;
    BOOL success = [self.fetchResultController performFetch:&fetchError];
    if (success) {
        NSLog(@"fetched!");
    }
    else {
    NSLog(@"fetch fail!");
    }
}
Run Code Online (Sandbox Code Playgroud)

entityDescription和context是在viewDidLoad方法中设置的,如下所示:

AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
self.managedObjectContext = appDelegate.managedObjectContext;
self.entityDescription = [NSEntityDescription entityForName:@"Project" inManagedObjectContext:self.managedObjectContext];
Run Code Online (Sandbox Code Playgroud)

崩溃信息: *由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'在实体中找不到keypath项目'


有人可以伸手吗?;)

iphone core-data nsfetchedresultscontroller nsfetchrequest

0
推荐指数
2
解决办法
6315
查看次数

设置NSManagedObject的属性后,NSFetchRequest.fetchOffset中断

我编写了一种从数据库中随机获取记录的方法,但是无论NSFetchRequest.fetchOffset是什么,我经常会得到相同的记录。

所以我做了一个实验,这是我的代码:

- (Card *)getNextCard {
    Card *card = nil;
    while (YES) {
        NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Card"];
        request.fetchLimit = 1;
        request.fetchOffset = arc4random_uniform(1031);

        NSError *error = nil;
        NSArray *matches = [self.database.managedObjectContext executeFetchRequest:request error:&error];

        if (matches) {
            card = [matches lastObject];
            // card.phEn= @"phonetic";
        }
        NSLog(@"nextCard: %@, %d", card ? card.en : card, request.fetchOffset);
    }
    return card;
}
Run Code Online (Sandbox Code Playgroud)

使用上面的代码,日志就像:

2013-05-07 23:11:16.035 MyApp[20598:707] nextCard: astound, 153
2013-05-07 23:11:17.175 MyApp[20598:707] nextCard: complicate, 370
2013-05-07 23:11:18.335 MyApp[20598:707] nextCard: hasten, 954
2013-05-07 23:11:19.801 MyApp[20598:707] …
Run Code Online (Sandbox Code Playgroud)

core-data objective-c nsfetchrequest

0
推荐指数
1
解决办法
249
查看次数

NSFetchRequest也提取我的实体类型的子类

我在表视图中使用了一个获取的结果控制器,一切正常,除了请求还获取我的实体类型的子类这一事实,我不会.有没有办法做到这一点?控制器以通常的方式实例化.

- (NSFetchedResultsController *)fetchedResultsController
{
    if (_fetchedResultsController != nil) {
        return _fetchedResultsController;
    }

    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    // Edit the entity name as appropriate.
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Event" inManagedObjectContext:self.managedObjectContext];
    [fetchRequest setEntity:entity];

    // Set the batch size to a suitable number.
    [fetchRequest setFetchBatchSize:20];

    // Edit the sort key as appropriate.
    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"date" ascending:NO];
    NSArray *sortDescriptors = @[sortDescriptor];

    [fetchRequest setSortDescriptors:sortDescriptors];

    // Edit the section name key path and cache name if appropriate.
    // nil for …
Run Code Online (Sandbox Code Playgroud)

iphone core-data nsfetchrequest ios

0
推荐指数
1
解决办法
410
查看次数

executeFetchRequest包含"<null>"和我的数据

你的ViewController中的Hello:

[super viewDidLoad];

context = [[AppDelegate sharedAppDelegate] managedObjectContext];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"Items" inManagedObjectContext:context]];
NSArray *results = [context executeFetchRequest:request error:&error];
if(error){
    NSLog(@"++++++++");
    return;
}

NSLog(@"ARRRAY====%@",[results valueForKey:@"items"]  );
Run Code Online (Sandbox Code Playgroud)

数据是:

("null>", MyGoodData)
Run Code Online (Sandbox Code Playgroud)

如果我在AppDelegate中调用此代码,那么确定:

数据是:

(MyGoodData)
Run Code Online (Sandbox Code Playgroud)

core-data objective-c nsfetchrequest ios

0
推荐指数
1
解决办法
552
查看次数

NSFetchRequest 按月分组

在我的模型中,我有一个 Sale 实体,每个 Sale 实体都有一个日期属性 (NSDate)。我想计算每个月的销售额总和。

我知道如何创建计算总和的表达式,我想知道如何告诉 NSFetchRequest 按月分组。

core-data nsfetchrequest

0
推荐指数
1
解决办法
986
查看次数

核心数据 NSFetchResultController 批量大小

NSFetchResultControllerNSFetchRequest具有fetchBatchSize = 20总是返回所有实体。它可以是什么?我没有使用 sectionKeyPath 并尝试了不同的排序描述符,但它仍然返回所有对象。

谢谢回复!我会详细说明的。我有一个具有两个字段的实体 - 距离和时间。我已经创建了 NSFetchResultController:

func noticesFetcher() -> NSFetchedResultsController {

    let fetchRequest = NSFetchRequest()

    let defaultStore = RKManagedObjectStore.defaultStore()

    let entity = NSEntityDescription.entityForName("Notice", inManagedObjectContext: defaultStore.mainQueueManagedObjectContext)
    fetchRequest.entity = entity

    let distanceSortDescriptor = NSSortDescriptor(key: "distance", ascending: true)
    let timeSortDescriptor = NSSortDescriptor(key: "time", ascending: false)
    let sortDescriptors = [distanceSortDescriptor, timeSortDescriptor]
    fetchRequest.sortDescriptors = sortDescriptors

    fetchRequest.fetchBatchSize = 20

    let resultFetcher = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: defaultStore.mainQueueManagedObjectContext, sectionNameKeyPath: nil, cacheName: nil)

    return resultFetcher
}
Run Code Online (Sandbox Code Playgroud)

但是当我执行 fetcher 时,我总是将所有实体都放在数据库中。(100)

func performFetcher(fetcher: …
Run Code Online (Sandbox Code Playgroud)

core-data nsfetchedresultscontroller nsfetchrequest ios

0
推荐指数
1
解决办法
1357
查看次数