我正在使用 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。
NSData 在 [dataUsingEncoding:dataUsingEncoding:NSASCIIStringEncoding] 之后为 NULL。