Hi,

my app implements secure decoding for all its serialization and it worked fine up until macOS 11. Now the deserialization chokes on nested collections like this

NSArray of NSDictionary containing [NSNumber, NSString, NSDate] (both keys and 
objects)

What previously worked no longer does:

NSSet *allClasses = [NSSet setWithObjects:
                        [NSArray class], [NSDictionary class],
                        [NSNumber class], [NSString class], [NSDate class],
                        nil];

[decoder decodeObjectOfClasses:allClasses forKey:@"somekey"];

On macOS 11 this produces the following exception:

------------------------------
-[NSKeyedUnarchiver _validateDecodeCollectionAllowedClassesRequirementsWithClasses:]: This method only supports decoding non-nested collections. Please remove the following or use '-decodeObjectOfClasses: forKey:' instead:
        (
                NSDictionary (0x7fff88714520) 
[/System/Library/Frameworks/CoreFoundation.framework]
        )
------------------------------

Of course leaving out NSDictionary produces a different exception about the decode encountering an NSDictionary object.

Something has changed, obviously. Can someone enlighten me how one is supposed to decode those kinds of objects? It's no option to change the encoding.

Thanks for any pointers

Regards
Markus

--
__________________________________________
Markus Spoettl
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to