Parse Plist (NSString) into NSDictionary
See Serializing a Property List
NSData* plistData = [source dataUsingEncoding:NSUTF8StringEncoding];NSString *error;NSPropertyListFormat format;NSDictionary* plist = [NSPropertyListSerialization propertyListWithData:plistData mutabilityOption:NSPropertyListImmutable format:&format errorDescription:&error];NSLog( @"plist is %@", plist );if(!plist){ NSLog(@"Error: %@",error); [error release];}
Try this:
NSData * data = [yourString dataUsingEncoding:NSUTF8StringEncoding];NSString *errorDesc = nil;NSPropertyListFormat format;NSDictionary * dict = (NSDictionary*)[NSPropertyListSerialization propertyListFromData:data mutabilityOption:NSPropertyListMutableContainersAndLeaves format:&format errorDescription:&errorDesc];
I've tried converting it NSData and then to a NSDictionary with NSPropertyListSerialization, but it returns "[NSCFString objectAtIndex:]: unrecognized selector sent to instance 0x100539f40" when I attempt to access the NSDictionary, showing that my Dictionary was not successfully created.
No, it shows no such thing. What it shows is that you tried to treat a string as an array. You'd need to determine where in the plist you were trying to get an array and why there was a string where you expected an array—i.e., whether you created the plist incorrectly (putting a string into it where you meant to put an array) or are examining it incorrectly (the presence of a string is correct; your subsequent expectation of an array is wrong).