Tracking object creation and removal with permanent EOGlobalID
From EOFWiki
Jump to navigationJump to search
Code
<source lang="objc">#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);
} </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