6

nullの結果が得られます

AppDelegate.h

@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;

AppDelegate.m

    @synthesize managedObjectContext = __managedObjectContext;
    @synthesize managedObjectModel = __managedObjectModel;
    @synthesize persistentStoreCoordinator = __persistentStoreCoordinator;

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
          Person *newPerson = [NSEntityDescription
          insertNewObjectForEntityForName:@"Person"
          inManagedObjectContext:self.managedObjectContext];
          .......

    }

Person のエンティティと name の属性を持つ 1 つの xcdatamodeld ファイルがあります。NSManagedObject から Person.h および .m ファイルを作成しました。

出力の結果が null になるのはなぜですか。

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+entityForName: nil is not a legal NSManagedObjectContext parameter searching for entity name 'Person''
4

4 に答える 4

12

viewController.m 実装ファイルで、このコードのすぐ下に:

- (void)viewDidLoad
{

次のコードを追加します。

id delegate = [[UIApplication sharedApplication] delegate];
    self.managedObjectContext = [delegate managedObjectContext];
于 2013-06-26T22:34:50.943 に答える
2

最初にプロジェクトを作成したときにコア データを追加していなかったので、コア データ オプションがオンになっているときに自動的に生成されるコードが欠落していることに気付きました。したがって、オンラインでいくつかのチュートリアルに従った場合、この自動生成されたコードが想定されます。それが私が台無しにしたところです。

于 2013-05-05T23:54:06.920 に答える
0

NSPersistentContainer を使用するプロジェクト テンプレートを使用している場合は、必ず iOS 10 以降でこれを実行してください。そうしないと、何らかのコア データ操作を実行すると、初期化でサイレントに失敗し、クラッシュします。

于 2017-03-22T14:30:46.603 に答える