0

私のコードはエンティティ、コンテキストなどを設定し、レコードを保存します。これはすべて正常に機能します。次に、新しいレコードを保存したいのですが、コードによって元のレコードが上書きされます。

同じインスタンスに複数の項目を書き込むにはどうすればよいですか?

AppDelegate *appdelagate = [[UIApplication sharedApplication]delegate];
context = [appdelagate managedObjectContext];
NSEntityDescription *entitydesc = [NSEntityDescription entityForName:@"UserData" inManagedObjectContext:context];
NSManagedObject *userData = [[NSManagedObject alloc]initWithEntity:entitydesc insertIntoManagedObjectContext:context];
            [userData setValue:@"Bob" forKey:@"userCD"];
            [userData setValue:@"Tall" forKey:@"dataCD"];
            // Store in the DB
            [context save:&error];

SOME HOW 次のレコードに移動

    [userData setValue:@"John" forKey:@"userCD"];
    [userData setValue:@"Short" forKey:@"dataCD"];
    // Store in the DB
    [context save:&error];

私は userData を解放して再度宣言する必要があると考えています... また、私は多くのことを見逃しているので、SQL の観点から考えるのをやめるべきだと考えています。

ありがとう

4

1 に答える 1

2

userDataこれは、新しいオブジェクトを作成するのではなく、最初のオブジェクトの属性を変更するためです。

NSManagedObject *userData;
// Create first object:
userData = [[NSManagedObject alloc]initWithEntity:entitydesc insertIntoManagedObjectContext:context];
[userData setValue:@"Bob" forKey:@"userCD"];
[userData setValue:@"Tall" forKey:@"dataCD"];
[context save:&error];
// [userData release];  only if you don't compile with ARC

// Create second object:
userData = [[NSManagedObject alloc]initWithEntity:entitydesc insertIntoManagedObjectContext:context];
[userData setValue:@"John" forKey:@"userCD"];
[userData setValue:@"Short" forKey:@"dataCD"];
[context save:&error];
// [userData release];  only if you don't compile with ARC
于 2013-04-24T14:02:25.937 に答える