从 nsdictionary 获取 const char

get const char from nsdictionary

我正在尝试从 nsdictionary

中读取 const char *

到目前为止我已经试过了

NSLog(@"input1 %s",(const char*)inInputData);
NSMutableDictionary * myDict = [[NSMutableDictionary alloc] init];
NSValue* inputData = [NSValue value:&inInputData withObjCType:@encode(const char)];
[myDict setObject:inputData forKey:@"inInputData"];
NSValue* readVal= [NSValue value:[myDict valueForKey:@"inInputData"] withObjCType:@encode(const char)];
NSLog(@"input2 %@",[myDict valueForKey:@"inInputData"]);
NSLog(@"readVal1 %s",(const char*)readVal);
NSLog(@"readVal2 %s",(const char*)[myDict valueForKey:@"inInputData"]);

结果不匹配

input1 !ã”—g¯ı0ã#àc†©Ä.2Ö£≤Áï7ª˚óm«Ûàut,‰aG≈ÈÜßx:◊Ætc´Ü£ªhg)8ÁÀ £Ø-<3©ô8>§
!…¨ÕøF∆‚∏0'Ñ&,œ#∏?Ô
input2 <9d>
readVal1 `+#
readVal2 `+#

如何从字典中正确获取 input1 值?

您将 const char 作为类型传递,而对输入数据的引用是类型 const char *

const char * 用于 C 字符串或二进制 dara。在第一种情况下,您应该将其转换为 NSString 的实例。

但在您的情况下,它显然用于二进制数据。在这种情况下,您应该将其转换为 NSData.

的实例
NSData *data = [NSData dataWithBytes:inInputData length:youShouldReallyKnowThat];

由于 NSData 的实例是实例对象,您可以将它们存储到字典中。