I may be phrasing the question incorrectly based on my situation – sorry if that’s the case.
Here’s the issue: In a previous version of my app, I’m saving an NSMutableArray to a plist using NSCoding.
In a new version, I’ve added settings data, so I now put the previous array and the new data in an NSDictionary then use NSCoding. Works fine.
However, for this release, I’ll have to determine if an existing plist is the old version (NSMutableArray) or the new one (NSDictionary).
The basic code is this:
NSData *codedData=[[NSData alloc] initWithContentsOfFile:plistPath];
//EITHER this (array): allMsgs=[NSKeyedUnarchiver unarchiveObjectWithData:codedData];
//OR this (nsdict): tmpdict=(NSDictionary *)[NSKeyedUnarchiver unarchiveObjectWithData:codedData];
How can I read the plist and determine if it’s an NSDictionary or NSMutableArray without throwing errors?
Just store the unarchived object as an
id, then useisKindOfClass:to check its class: