Re: id type in NSCoder
Re: id type in NSCoder
- Subject: Re: id type in NSCoder
- From: Ian McGregor <email@hidden>
- Date: Thu, 18 Dec 2003 10:43:30 -0800
Sorry that was meant for cocoa dev.
On 18-Dec-03, at 10:36 AM, Ian McGregor wrote:
> I am still getting weird values and crashes. :(
>
> I have:
>
> My Node
> -----------
> NSMutableDictionary *nodeData;
>
> node data contains (amongst other objects) and NSMutableArray of
> MyFields
>
> My Fields
> ------------
> NSString *fieldName;
> id fieldValue;
>
>
> as mentioned previously, the coding protocols for MyFields is encoding
> and decoding the fieldValues correctly - proved with NSLog.
>
> BUT, in the MyNode class, I cannot do anything with [[[nodeData
> objectForKey:@"MyFields"] objectAtIndex:0] fieldValue] without getting
> signal 10 (SIGBUS) issues.
>
>
> For example, in MyNode:
>
> - (id)initWithCoder:(NSCoder *)coder
> {
> [super init];
> [self setNodeParent:[coder decodeObject]];
> [self setChildren:[coder decodeObject]];
> [self setNodeData:[coder decodeObject]];
> if ([nodeData objectForKey:@"MyFields"] == NULL) {
> NSLog(@"node data MyFields is null");
> } else {
> if ([[nodeData objectForKey:@"MyFields"] count] > 0) {
> NSLog(@"%@",[[[nodeData objectForKey:@"MyFields"]
> objectAtIndex:0] fieldName]); // this works and shows the field name
> if ([[[nodeData objectForKey:@"assetFields"]
> objectAtIndex:0] fieldValue] == NULL) {
> NSLog(@"fieldValue is null");
> } else {
> id value = [[[nodeData objectForKey:@"assetFields"]
> objectAtIndex:0] fieldValue];
> NSString *theClass = [value className]; // this
> crashes with signal 10
> NSLog(@"value = %@",value); // this also crashes with
> signal 10
> }
> }
> }
> [self setNodeLeaf:[coder decodeObject]];
> return self;
> }
>
> Any pointers appreciated.
>
> Cheers,
>
> Ian
>
> On 17-Dec-03, at 11:37 PM, Ian McGregor wrote:
>
>> Hi Scott,
>>
>> I have been bashing at this for a few hours now... and, as usual I
>> think you are right. This SHOULD be working. I just proved it to
>> myself
>> by placing some NSLog's in there:
>>
>> NSLog(@"decode: fieldValue class is %@",[fieldValue class]);
>>
>> and
>>
>> NSLog(@"encode: fieldValue class is %@",[fieldValue class]);
>>
>> and they are both displaying the correct classes, with the exception
>> of
>> a few (null)'s... I wonder if these (nulls) might might be the issue!
>>
>>
>>
>> For example, I set fieldValue as an NSNumber and got
>> On 17-Dec-03, at 11:07 PM, Scott Anguish wrote:
>>
>>> how do you mean it isn't working?
>>>
>>> id just tells the compiler that you're not sure what you'll be
>>> using... when the object is encoded, it should just handle it.
>> _______________________________________________
>> cocoa-dev mailing list | email@hidden
>> Help/Unsubscribe/Archives:
>> http://www.lists.apple.com/mailman/listinfo/cocoa-dev
>> Do not post admin requests to the list. They will be ignored.
_______________________________________________
xcode-users mailing list | email@hidden
Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/xcode-users
Do not post admin requests to the list. They will be ignored.