0

私の iOS アプリケーションには、2 つのエンティティを持つコア データ モデルがあります。

エンティティ: ユニット / 属性: unit_name - NSString

Exercise( one to many)との関係

エンティティ: エクササイズ / 属性: エクササイズ名 - NSString .

だからunit、たくさん持つことができますexercises

私のテーブルでは、View Controller がすべてexercisesリストされています。Exercise(そのため、最初に、エンティティとmanagedObjectContextこのエンティティへのポイントのフェッチ要求を行います。

"NEW" unit保存機能で保存したい場合exercisesは機能しません。エラーはまったくありませんが、unitテーブルはまだ空です。

保存関数のコードは次のとおりです。

 Units *newUnit = [NSEntityDescription insertNewObjectForEntityForName:@"Units"   inManagedObjectContext:[self.coreDataHelper managedObjectContext]];
    newUnit.unit_name = unitTextField.text;//Attribute
    newUnit.exercises = exerciseSet;//Relationship (NSSet)

    NSError *error = nil;
    if (![[self.coreDataHelper managedObjectContext]save:&error]) {
        NSLog(@"There was an error! %@", error);
    }
    else {
        NSLog(@"Success!");
    }

まだエンティティmanagedObjectContextを指しているようです。Exercise(このエンティティで初めて初期化されたため) にcoreDataHelperは、NSPersistentStoreCoordinatorNSManagedObjectContextNSManagedObjectModelおよびいくつかの読み取り書き込みおよび削除メソッドがあります。

手伝ってくれてありがとう!

4

1 に答える 1

0

すべてが正常に接続されていることを確認するために、次のように追加します。

NSAssert(self.coreDataHelper, @"null coreDataHelper");
NSAssert(self.coreDataHelper.managedObjectContext, @"null MOC");
NSLog(@"available entities: %@", 
    self.coreDataHelper.managedObjectContext.persistentStoreCoordinator.managedObjectModel.entitiesByName);

"Units"すべてが正しく設定されていれば、エンティティの 1 つとして表示されるはずです。

そして、newUnit を挿入した後、それが機能することを確認します。

ところで、これは私には論理エラーのようなにおいがします: 保存するたびに新しい Units インスタンスを作成しているのですか? 代わりに検索または作成パターンを使用しないでよろしいですか?

于 2013-03-24T04:24:02.143 に答える