Related to a previous posting of mine regarding floats and CGFloats when
decoding older 32 bit serializations in a 64 bit runtime, I am now also in the
process of modernizing some old code that used int values encapsulated by
NSNumber in keyed archives.
The current serializations were performed in a 32 bit environment. I am now
running in a 64 bit environment and am reading those archives. The archives
contain NSNumber objects which stored int values. I would like to update the
code to use NSInteger instead and the corresponding methods on the NSNumber
objects.
Will I run into a similar decoding problem where the int values will not be
correctly read as longs in the new environment, or is NSNumber taking care of
things under the hood for me?
~Phil
On Jul 13, 2011, at 12:47 PM, Philip Dow wrote:
> Brilliant. Thank you Glenn. I compiled the app for 32 bit and it read the
> archive fine. I've created my own struct with floats for reading the archive
> in 64 bit and am coercing the data into doubles after the decoding.
>
> ~Phil
>
> On Jul 13, 2011, at 12:30 PM, glenn andreas wrote:
>
>> Are you decoding it from a 64 bit app? Because CGRect on 64 bits is made of
>> doubles, while on 32 bits (where it was probably encoded) it was made of
>> floats....
>>
>> Also, the exact format for @encode() varies greatly between compiler version
>> (especially with regards for things like structure names vs ?, etc...).
>> This, in and of itself, shouldn't make it incompatible, but a structure with
>> two structures each with two floats doesn't match with the double-based
>> CGRect.
>>
>> On Jul 13, 2011, at 12:20 PM, Philip Dow wrote:
>>
>>> I am trying to decode a 3rd party archive encoded in the old NSArchiver
>>> (not keyed) format. At a point in the decoding, I expect to find a CGRect,
>>> but when I call
>>>
>>> [coder decodeValueOfObjCType:@encode(CGRect) at:&myRect]
>>>
>>> an exception is raised with the error:
>>>
>>> file inconsistency: read '{?={?=ff}{?=ff}}', expecting
>>> '{CGRect={CGPoint=dd}{CGSize=dd}}'
>>>
>>> Sure enough, if I open the file in a text editor, I see {?={?=ff}{?=ff}}.
>>>
>>> According to the docs, the curly braces indicate a structure is encoded,
>>> which I would expect for CGRect, but the ? indicates an unknown type. I'm
>>> stumped for a solution and was wondering if anyone might have an insight.
>>>
>>> ~Phil_______________________________________________
>>>
>>> Cocoa-dev mailing list ([email protected])
>>>
>>> Please do not post admin requests or moderator comments to the list.
>>> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
>>>
>>> Help/Unsubscribe/Update your Subscription:
>>> http://lists.apple.com/mailman/options/cocoa-dev/gandreas%40mac.com
>>>
>>> This email sent to [email protected]
>>
>> Glenn Andreas [email protected]
>> The most merciful thing in the world ... is the inability of the human mind
>> to correlate all its contents - HPL
>>
>
> _______________________________________________
>
> Cocoa-dev mailing list ([email protected])
>
> Please do not post admin requests or moderator comments to the list.
> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
>
> Help/Unsubscribe/Update your Subscription:
> http://lists.apple.com/mailman/options/cocoa-dev/dev%40getsprouted.com
>
> This email sent to [email protected]
_______________________________________________
Cocoa-dev mailing list ([email protected])
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com
This email sent to [email protected]