J'ai un NSWindow
que j'utilise pour créer de nouveaux enregistrements. Après avoir appuyé sur le bouton Ajouter, une certaine méthode est appelée dans lequel je fais ce qui suit:Données de base: propriétés d'entité se mélangeant
- (IBAction)addActionAddSheet:sender {
NSManagedObjectContext *moc = [self managedObjectContext];
NSManagedObject *newObject = [NSEntityDescription insertNewObjectForEntityForName:@"Recipe" inManagedObjectContext:moc];
[newObject setValue:[newRecipeName stringValue] forKey:@"name"];
[newObject setValue:[newRecipeInstructions string] forKey:@"instructions"];
NSLog(@"New object is: %@", newObject);
[NSApp endSheet:addSheet];
[addSheet orderOut:sender];
}
Le (modifié) sortie NSLog
après avoir exécuté deux fois, se présente comme suit:
<NSManagedObject: 0x10045c6a0> (entity: Recipe; id: 0x1004564a0 <x-coredata:///Recipe/t18FEC674-8937-49DF-A18B-940EF82E83C32> ; data: {
instructions = X;
name = X;
})
<NSManagedObject: 0x1149069a0> (entity: Recipe; id: 0x100106a20 <x-coredata:///Recipe/t18FEC674-8937-49DF-A18B-940EF82E83C33> ; data: {
instructions = Y;
name = Y;
})
C'est complètement comme prévu. Cependant, ma vue de table, qui est liée à un contrôleur de matrice, montre que les objets X et Y ont X comme valeur pour instructions
.
Lorsque je quitte ma demande et les données sont enregistrées, ce que je vois dans mon fichier xml est encore différent:
<attribute name="name" type="string">Y</attribute>
<attribute name="instructions" type="string">Y</attribute>
<attribute name="name" type="string">X</attribute>
<attribute name="instructions" type="string">Y</attribute>
Cette fois, ils ont tous deux la valeur Y.
La sortie de NSLog
montre que j'ai affaire à deux objets différents ici, donc je ne suis pas sûr de ce que je pourrais faire qui pourrait influencer les deux.
Ce sont est ma sortie non éditée:
2009-12-07 14:46:18.409 Recipe[11578:a0f] managedObjectContext
2009-12-07 14:46:18.411 Recipe[11578:a0f] persistentStoreCoordinator
2009-12-07 14:46:18.411 Recipe[11578:a0f] managedObjectModel
2009-12-07 14:46:18.423 Recipe[11578:a0f] applicationSupportDirectory
2009-12-07 14:46:18.436 Recipe[11578:a0f] externalRecordsDirectory
2009-12-07 14:46:20.484 Recipe[11578:a0f] Show Add sheet
2009-12-07 14:46:20.485 Recipe[11578:a0f] Clear values
2009-12-07 14:46:20.494 Recipe[11578:a0f] call beginSheet
2009-12-07 14:46:23.632 Recipe[11578:a0f] addActionAddSheet: -- Add button clicked
2009-12-07 14:46:23.632 Recipe[11578:a0f] Create new mananged obj in context
2009-12-07 14:46:23.634 Recipe[11578:a0f] managedObjectContext
2009-12-07 14:46:23.635 Recipe[11578:a0f] Set values for name and instructions
2009-12-07 14:46:23.636 Recipe[11578:a0f] New object is: <NSManagedObject: 0x1001c89c0> (entity: Recipe; id: 0x1001c9470 <x-coredata:///Recipe/tE9BD4EE3-082C-4715-AB66-2C3580223F9E2> ; data: {
instructions = A;
name = A;
})
2009-12-07 14:46:23.636 Recipe[11578:a0f] call [NSApp endSheet:] and [addSheet orderOut:]
2009-12-07 14:46:23.637 Recipe[11578:a0f] addSheetDidEnd:returnCode:contextInfo: -- empty method
2009-12-07 14:46:35.327 Recipe[11578:a0f] Show Add sheet
2009-12-07 14:46:35.328 Recipe[11578:a0f] Clear values
2009-12-07 14:46:35.337 Recipe[11578:a0f] call beginSheet
2009-12-07 14:46:39.836 Recipe[11578:a0f] addActionAddSheet: -- Add button clicked
2009-12-07 14:46:39.836 Recipe[11578:a0f] Create new mananged obj in context
2009-12-07 14:46:39.838 Recipe[11578:a0f] managedObjectContext
2009-12-07 14:46:39.839 Recipe[11578:a0f] Set values for name and instructions
2009-12-07 14:46:39.843 Recipe[11578:a0f] New object is: <NSManagedObject: 0x102070ad0> (entity: Recipe; id: 0x10205e420 <x-coredata:///Recipe/tE9BD4EE3-082C-4715-AB66-2C3580223F9E3> ; data: {
instructions = B;
name = B;
})
2009-12-07 14:46:39.843 Recipe[11578:a0f] call [NSApp endSheet:] and [addSheet orderOut:]
2009-12-07 14:46:39.844 Recipe[11578:a0f] addSheetDidEnd:returnCode:contextInfo: -- empty method
Recette A:
http://web.me.com/bpeiren/recipeA.png
Recette B:
http://web.me.com/bpeiren/recipeB.png
Mon contrôleur RAID:
http://web.me.com/bpeiren/Cocoa/so/array_controller.png
fixations Ma colonne de table:
http://web.me.com/bpeiren/Cocoa/so/tablecolumn.png
fixation Mon label:
http://web.me.com/bpeiren/Cocoa/so/label.png
Vous pouvez publier des exemples de données sans les modifier. Assez souvent dans le débogage vous êtes coincé sur une hypothèse et ne le réalisez pas. Vous pourriez cacher le bug dans votre édition des données. Publiez les données réelles entrées dans l'interface. Les données réelles imprimées par NSLog etc. – TechZen