Is there a reason you can't store and retrieve them separately?
NSString * url = @"http://podcastdownload.npr.org/anon.npr-podcasts/podcast/35/290491304/npr_290491304.mp3";
CGFloat currentPlaybackPosition = 0.0; // position in seconds
NSMutableDictionary * playbackPositionDictionary = [NSMutableDictionary new];
playbackPositionDictionary[@"URL"] = url;
playbackPositionDictionary[@"Seconds"] = [NSNumber numberWithFloat:currentPlaybackPosition];
PFObject * ob = [PFObject objectWithClassName:@"TrialClass"];
ob[@"playbackPositionDictionary"] = playbackPositionDictionary;
[ob saveInBackground];
// Retrieve
NSDictionary * retrievedPlaybackPositionDictionary = ob[@"playbackPositionDictionary"];
NSString * urlForPlaybackPosition = retrievedPlaybackPositionDictionary[@"URL"];
CGFloat playbackPositionInSeconds = [retrievedPlaybackPositionDictionary[@"Seconds"]floatValue];
NSLog(@"Start playing: %@ starting at: %@", urlForPlaybackPosition, playbackPositionInSeconds);
The only solutions I can think of involve converting the URL to a more accessible key. Would this work as an alternative solution?
I'm not sure if this is improved, but if you want to store these dictionaries on Parse, perhaps converting them to data strings is another work around:
Declare Methods:
- (NSString *) hexStringFromDictionary:(NSDictionary *)dict {
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict
options:0
error:&error];
return [jsonData description];
}
- (NSDictionary *) dictionaryFromHexString:(NSString *)string {
string = [string lowercaseString];
NSMutableData *data= [NSMutableData new];
unsigned char whole_byte;
char byte_chars[3] = {'\0','\0','\0'};
int i = 0;
int length = string.length;
while (i < length-1) {
char c = [string characterAtIndex:i++];
if (c < '0' || (c > '9' && c < 'a') || c > 'f')
continue;
byte_chars[0] = c;
byte_chars[1] = [string characterAtIndex:i++];
whole_byte = strtol(byte_chars, NULL, 16);
[data appendBytes:&whole_byte length:1];
}
return [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
}
Conversion From HexString Modified From HERE!
Create Your Dictionary:
NSString * url = @"http://podcastdownload.npr.org/anon.npr-podcasts/podcast/35/290491304/npr_290491304.mp3";
CGFloat currentPlaybackPosition = 0.0; // position in seconds
NSMutableDictionary * playbackPositionDictionary = [NSMutableDictionary new];
playbackPositionDictionary[url] = [NSNumber numberWithFloat:currentPlaybackPosition];
Save To PFObject:
PFObject * ob = [PFObject objectWithClassName:@"ParseClass"];
NSString * dictString = [self hexStringFromDictionary:playbackPositionDictionary];
ob[@"playbackPositionDictionaryString"] = dictString;
Retrieve From PFObject:
NSString * hexString = ob[@"playbackPositionDictionaryString"];
NSDictionary * playbackPositionDictionary = [self dictionaryFromHexString:hexString];