Tracking object creation and removal with permanent EOGlobalID

From EOFWiki
Jump to navigationJump to search

Code

<source lang="objc">#import <Foundation/Foundation.h>

  1. 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);

} </source>

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