0

Core Data からのデータを管理するために NSFetchedResultsController を使用していますが、次の例外が発生し続けます。

012-05-10 21:54:32.142 test[939:fb03] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '+entityForName: could not locate an NSManagedObjectModel for entity name 'event''

これが私のコードです

- (NSFetchedResultsController *)fetchedResultsController {

    if (_fetchedResultsController != nil) {
        return _fetchedResultsController;
    }

    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription
                                   entityForName:@"event" inManagedObjectContext:managedObjectContext];
    [fetchRequest setEntity:entity];

    NSSortDescriptor *sort = [[NSSortDescriptor alloc]
                              initWithKey:@"date" ascending:NO];
    [fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];

    [fetchRequest setFetchBatchSize:20];

    NSFetchedResultsController *theFetchedResultsController =
    [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
                                        managedObjectContext:managedObjectContext sectionNameKeyPath:nil
                                                   cacheName:@"Root"];
    self.fetchedResultsController = theFetchedResultsController;
    _fetchedResultsController.delegate = self;

    return _fetchedResultsController;

}

どうしたの?どうも

以下は、データモデルとデータクラスにあるものです

ここに画像の説明を入力

ここに画像の説明を入力

私の挿入データコードに問題があるかもしれないので、それも投稿します

- (IBAction)done:(id)sender
{

    NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
    NSEntityDescription *entity = [[self.fetchedResultsController fetchRequest] entity];
    NSManagedObject *newManagedObject = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context];


    NSString *name = _nameField.text;
    NSString *amount = _amountField.text;

    [newManagedObject setValue:[NSDate date] forKey:@"date"];
    [newManagedObject setValue:name forKey:@"name"];
    [newManagedObject setValue:amount forKey:@"amount"];
    [newManagedObject setValue:category forKey:@"category"];

    // Save the context.
    NSError *error = nil;
    if (![context save:&error]) {

        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
        abort();
    }
    [self.delegate addContentViewControllerDidSave:self];
}
4

3 に答える 3

0

エンティティの名前が「イベント」ではなく「イベント」であることを確認してください。エンティティは大文字で始まることになっていますが、属性名は小文字で始まることになっています。作成される標準エンティティの名前は、「イベント」ではなく「イベント」です。

編集スクリーンショットによると、エンティティの名前は「イベント」ではなく「イベント」です。また、エンティティNSManagedObjectサブクラスには、「Item」ではなく「Event」という名前を付ける必要があります。エンティティを選択し、メインメニューで[エディタ]->[NSManagedObjectサブクラスの作成]をクリックします。これにより、適切に作成されます。

これらすべての修正が完了したら、シミュレーターをリセットするか、シミュレーターからアプリを削除してから、再度実行してください。

于 2012-05-10T14:37:40.347 に答える
0

データモデルを変更したが、NSManagedObjectクラスを変更していない可能性があります。ここでは、変更したエンティティのEvent.hである必要があります。

于 2012-05-10T14:34:10.967 に答える
0

管理対象オブジェクト コンテキスト モデルにエンティティ イベントを追加していません。追加した場合は、初めて削除する必要があります。つまり、データモデルを変更した後、それらは初めてメモリにロードされません。アプリを削除する必要があります

于 2012-05-10T14:07:26.720 に答える