私はiOSアプリケーションを作成することに全く新しいです。私はすぐにフォームアプリケーションを作成して、それを記入したい人からの情報を保存することができます。名前、メールなどのテキストフィールドの基本的な束。コアデータエラー:nilは合法的なNSManagedObjectContextパラメータではありません
フォームは、これらのデータを以下のコードで保存しています。
//Save action
NSEntityDescription *entityDesc = [NSEntityDescription entityForName:@"Person" inManagedObjectContext: context];
NSManagedObject *newPerson = [[NSManagedObject alloc]initWithEntity:entityDesc insertIntoManagedObjectContext:context];
//Fill in values
[newPerson setValue:self.btnPrefix.titleLabel.text forKey: @"prefix"];
[newPerson setValue:self.txtFirstName.text forKey: @"firstname"];
[newPerson setValue:self.txtLastName.text forKey: @"lastname"];
[newPerson setValue:self.txtLive.text forKey: @"country"];
[newPerson setValue:self.txtMail.text forKey: @"email"];
[newPerson setValue:self.txtPhone.text forKey: @"phonenumber"];
[newPerson setValue:self.txtLinked.text forKey: @"linkedIn"];
[newPerson setValue:self.txtAbout.text forKey: @"about"];
NSError *error;
[context save:&error];
シミュレータ上で実行しても問題はありません。それが最初の行にtriggerdますデバッグ後
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+entityForName: nil is not a legal NSManagedObjectContext parameter searching for entity name 'Person''
:しかし、かつて私はこのエラーを取得するiPad上で実行に実行したとき
NSEntityDescription *entityDesc = [NSEntityDescription entityForName:@"Person" inManagedObjectContext: context];
もう少し研究した後は、私のAppdelegateは皆無persistentContainerが含まれています仮想デバイスで実行されるといっぱいになります。だから私は問題がそこにあると思うが、私はそれを解決する方法を見つけることができない。
- (void)viewDidLoad {
[super viewDidLoad];
AppDelegate *appdelegate = (AppDelegate*)[[UIApplication sharedApplication]delegate];
context = appdelegate.persistentContainer.viewContext;
}
誰でもお手伝いできますか?
エラーがあなたの 'context'パラメータことを示しています は、URLの=のFileManager.default.urlsを聞かせて'nil'ですが、そうであってはいけません。あなたはそこに渡されているマネージオブジェクトコンテキストオブジェクトをどうやって取得しますか?あなたのモデルに「Person」という名前のEntityが含まれていることを確認したと思います。 – Gero
** viewDidLoad ** 'AppDelegate * appdelegate =(AppDelegate *)[[UIApplication sharedApplication] delegate]; context = appdelegate.persistentContainer.viewContext; '。そして、はい、私はエンティティPersonを含むモデルを持っています。私が言ったように、それはシミュレータ上で動作するので、物理的なデバイスで動作させるために欠けているものがあると思いますか? – Akorna
もう少し調査した後、私のAppdelegateにはデバイス上で実行されたときにはpersistentContainerが含まれていませんが、仮想デバイスで実行されたときには満たされています。だから私は問題がそこにあると思うが、私はそれを解決する方法を見つけることができない。 – Akorna