5
- (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!");
    }
}

次に示すように、entityDescription とコンテキストは viewDidLoad メソッドで設定されます。

AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
self.managedObjectContext = appDelegate.managedObjectContext;
self.entityDescription = [NSEntityDescription entityForName:@"Project" inManagedObjectContext:self.managedObjectContext];

クラッシュ情報: *キャッチされない例外 'NSInvalidArgumentException' が原因でアプリを終了しています。理由: 'キーパス プロジェクトがエンティティに見つかりません'


誰か手を貸してくれませんか?;)

4

5 に答える 5

13

ソート記述子で使用されるキー

[NSSortDescriptor sortDescriptorWithKey:@"Project" ascending:YES];

エンティティ自体の名前ではなく、Core Data エンティティのプロパティである必要があります。@"Project"そのため、ソート記述子を Project エンティティのプロパティ ( など) に置き換える必要があります@"name"

于 2013-05-02T08:04:04.660 に答える
0
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];

[fetchRequest setPredicate:predicate];

NSEntityDescription *entity = [NSEntityDescription entityForName:@"Project"          inManagedObjectContext:context];

NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"Column_Name"  ascending:YES];

[request setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]];

[fetchRequest setEntity:entity];

NSError *error = nil;
NSArray *arrTemp = [context executeFetchRequest:fetchRequest error:&error];

if([arrTemp count]>0){
   NSLog(@"%@",arrTemp);
}
于 2013-05-02T13:13:06.437 に答える
0

次のようにキャッシュ名を設定します。

self.fetchResultController = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:@"temp"];
于 2013-05-02T05:48:46.167 に答える