ete*_*ter 0 serialization nsdictionary nsdata ios
我正在使用URLScheme,我需要将应用程序A中的序列化NSDictionary发送到我的应用程序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];
Run Code Online (Sandbox Code Playgroud)
在应用程序B中,我使用的是NSKeyedUnarchiver
NSData *data = [[NSString stringWithFormat:@"%@", val] dataUsingEncoding:NSASCIIStringEncoding];
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
NSDictionary *myDictionary = [[unarchiver decodeObject] retain];
[unarchiver finishDecoding];
[unarchiver release];
Run Code Online (Sandbox Code Playgroud)
我的序列化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.
查看NSJSONSerialization,使字典和数组成为json普通字符串格式变得轻而易举.
生成json数据NSDictionary*mydict = [NSDictionary dictionaryWithObjectsAndKeys:....
NSData* jsonData = [NSJSONSerialization dataWithJSONObject:info options:NSJSONWritingPrettyPrinted error:&error];
Run Code Online (Sandbox Code Playgroud)
并改变这一点:
NSError *error = nil;
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error];
Run Code Online (Sandbox Code Playgroud)
没有那么简单,你不需要任何外部库或设置.内置于
| 归档时间: |
|
| 查看次数: |
7617 次 |
| 最近记录: |