Skip navigation.
 
mlRe: Weird coder problem
FROM : Joseph Jones
DATE : Mon Nov 25 21:01:14 2002

OK, I can't seem to figure out why my items are archiving correctly, but
blowing up on unarchiving. There seems to be a problem with unarchiving the
array in my class, but the call stack is blowing up in the libraries and not
my code, which makes it a little difficult to debug. Could anyone here
provide an insight? I will append a cut down version of my code here:

__________________________________________________________

/* ProjectItem */

#import <Cocoa/Cocoa.h>

@interface ProjectItem : NSObject <NSCoding>
{
    //Item Data
    NSString*    _title;
   
    //Children
    NSMutableArray* _children;
}

- (id) init;
- (void) dealloc;
- (int) numChildren;
- (ProjectItem*) childAtIndex:(int)index;
- (void) addChild:(NSString*)title;

- (NSString*) title;
- (void) setTitle:(NSString*)aTitle;

- (id) initWithCoder: (NSCoder*) decoder;
- (void)encodeWithCoder: (NSCoder*) encoder;

@end

@implementation ProjectItem

- (id) init
{
    self = [super init];

    if ( self )
    {
        _children = [[NSMutableArray alloc] init];
        _title  = @"";
    }
   
    return self;
}

- (void) dealloc
{
    [_children release];
    [_title release];
    [super dealloc];
}

- (int) numChildren
{
    return [_children count];
}

- (ProjectItem*) childAtIndex:(int)index
{
    return [_children objectAtIndex:index];
}

- (void) addChild:(NSString*)title
{
    ProjectItem* item = [[ProjectItem alloc] init];
    [item setTitle:title];
    [_children addObject:item];
}

- (NSString*) title
{
    return _title;
}

- (void) setTitle:(NSString*)aTitle
{
    [aTitle retain];
    [_title release];
    _title = aTitle;
}

- (void) encodeWithCoder: (NSCoder*) coder
{
    if ( [coder allowsKeyedCoding] )
    {
        [coder encodeObject:_title forKey:@"title"];
        [coder encodeObject:_children forKey:@"children"];
    }
    else
    {
        [coder encodeObject:_title];
        [coder encodeObject:_children];
    }
}

- (id) initWithCoder:(NSCoder*) coder
{
    self = [super init];
    if ( self )
    {
        if ( [coder allowsKeyedCoding] )
        {
            _title = [[coder decodeObjectForKey:@"title"] retain];
            _children = [[coder decodeObjectForKey:@"children"] retain];
        }
        else
        {
            _title = [[coder decodeObject] retain];
            _children = [[coder decodeObject] retain];
        }
    }
}

@end
_______________________________________________
cocoa-dev mailing list | <email_removed>
Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/cocoa-dev
Do not post admin requests to the list. They will be ignored.

Related mailsAuthorDate
mlWeird coder problem Joseph Jones Nov 25, 17:19
mlRe: Weird coder problem Joseph Jones Nov 25, 20:43
mlRe: Weird coder problem Joseph Jones Nov 25, 21:01
mlRe: Weird coder problem Vince DeMarco Nov 25, 23:33
mlRe: Weird coder problem Joseph Jones Nov 25, 23:54
mlSOLVED:Re: Weird coder problem Joseph Jones Nov 26, 00:03