Tracking object creation and removal with permanent EOGlobalID

From EOFWiki
Jump to: navigation, search

Code

#import <Foundation/Foundation.h>
#import <EOControl/EOControl.h>
 
 
@interface PermanentGlobalID : EOTemporaryGlobalID
@end
 
@implementation PermanentGlobalID : EOTemporaryGlobalID
 
- (BOOL) isTemporary
{
   return( NO);
}
 
@end
 
 
int main (int argc, const char * argv[])
{
   NSAutoreleasePool   *pool;
   EOEditingContext    *context;
   NSString            *obj;
   NSString            *obj2;
   EOGlobalID          *gid;
 
   pool = [NSAutoreleasePool new];
 
   context = [[EOEditingContext new] autorelease];
 
   obj = @"VfL Bochum 1848";
   gid = [[PermanentGlobalID new] autorelease];
 
   NSLog( @"A) %d insertedObjects, %d registeredObjects, %d deletedObjects",
         [[context insertedObjects] count], [[context registeredObjects] count],  [[context deletedObjects] count]);
 
   [context recordObject:obj
                globalID:gid];
 
   NSLog( @"B) %d insertedObjects, %d registeredObjects, %d deletedObjects",
         [[context insertedObjects] count], [[context registeredObjects] count],  [[context deletedObjects] count]);
   NSLog( @"C) GlobalIDForObject %@ = %@", obj, [context globalIDForObject:obj]);
 
   obj2 = @"Mulle kybernetiK";
   [context insertObject:obj2];
 
   NSLog( @"D) %d insertedObjects, %d registeredObjects, %d deletedObjects",
         [[context insertedObjects] count], [[context registeredObjects] count],  [[context deletedObjects] count]);
   NSLog( @"E) GlobalIDForObject %@ = %@", obj2, [context globalIDForObject:obj2]);
 
   [context deleteObject:obj2];
   NSLog( @"F) %d insertedObjects, %d registeredObjects, %d deletedObjects",
         [[context insertedObjects] count], [[context registeredObjects] count],  [[context deletedObjects] count]);
 
   [context deleteObject:obj];
   NSLog( @"G) %d insertedObjects, %d registeredObjects, %d deletedObjects",
         [[context insertedObjects] count], [[context registeredObjects] count],  [[context deletedObjects] count]);
 
   [pool release];
   return( 0);
}

Comment

See Tracking object creation and removal before continuing.

This time the recorded object is given a non-temporary EOGlobalID (Output C) and therefore it appears in the list of deletedObjects at the end (Output G)

Output

A) 0 insertedObjects, 0 registeredObjects, 0 deletedObjects
B) 0 insertedObjects, 1 registeredObjects, 0 deletedObjects
C) GlobalIDForObject VfL Bochum 1848 = <PermanentGlobalID 0x1085e0 (hash=0x42F153F4)>
D) 1 insertedObjects, 2 registeredObjects, 0 deletedObjects
E) GlobalIDForObject Mulle kybernetiK = <EOTemporaryGlobalID 0x114550 (hash=0x85281286)>
F) 0 insertedObjects, 1 registeredObjects, 0 deletedObjects
G) 0 insertedObjects, 1 registeredObjects, 1 deletedObjects
Personal tools