私は URLScheme を使用しており、シリアル化された NSDictionary をアプリ A からアプリ B に送信する必要があります。
アプリ Aでは、NSKeyedArchiver を使用して NSDictionary を NSData にシリアル化しています
NSDictionary *myDictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"This is value 1", @"key1",
@"value 2", @"key2",
@"value3", @"key3",
@"", @"key4",
@"value5", @"key5",
@"value 6", @"key6",
nil];
NSMutableData *data = [[NSMutableData alloc] init];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
[archiver encodeObject:myDictionary];
[archiver finishEncoding];
[archiver release];
NSString *bytes = [[[NSString alloc] initWithData:data
encoding:NSASCIIStringEncoding] autorelease];
アプリ Bでは、NSKeyedUnarchiver を使用しています
NSData *data = [[NSString stringWithFormat:@"%@", val] dataUsingEncoding:NSASCIIStringEncoding];
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
NSDictionary *myDictionary = [[unarchiver decodeObject] retain];
[unarchiver finishDecoding];
[unarchiver release];
私のシリアル化された NSDictionary は次のようになります。
bplist00Ô01T$topX$objectsX$versionY$archiverÑR$0¯
!"#$%&'()U$nullÓ ZNS.objectsWNS.keysV$class¦ ¦Tkey2Tkey5Tkey3Tkey1Tkey6Tkey4Wvalue
2o@
そして、この NSString を NSData に変換して NSDictionary を取り戻すことができないようです。
[dataUsingEncoding:dataUsingEncoding:NSASCIIStringEncoding] の後の NSData は NULL です。