我正在将NSString转换为NSData以便通过JSON解析,但是我收到了以下错误。
Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: '- [__NSCFDictionary dataUsingEncoding:]:
unrecognized selector sent to instance 0x7987d60'
代码如下:
NSData *data = [str dataUsingEncoding:NSASCIIStringEncoding];
//NSUTF8StringEncoding also failed.
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
在我看来,这是因为str包含换行符:'\ n'。
我说错了吗?
有人可以帮我解决这个问题吗?
答案 0 :(得分:9)
您的错误表明您尝试将dataUsingEncoding:allowLossyConversion:
发送到NSDictionary
的实例,该实例不知道如何处理该选择器。确保您的str
对象实际上是一个字符串...
答案 1 :(得分:3)
尝试使用NSUnicodeStringEncoding
代替NSASCIIStringEncoding
。所以更换一行:
NSData *data = [str dataUsingEncoding:NSASCIIStringEncoding];
用这个:
NSData *data = [str dataUsingEncoding:NSUnicodeStringEncoding];
答案 2 :(得分:0)
我刚用我的样本字符串检查过。 **如果你能给我你的字符串,那么我可以用我的以下示例代码签出。
NSString *msg = [NSString stringWithFormat:@"tell me \"where\"\n"
"is\n"
"wrong"];
NSData *theData = [msg dataUsingEncoding:NSASCIIStringEncoding];
NSString* theString = [[NSString alloc] initWithData:theData encoding:NSASCIIStringEncoding];
BOOL isValid = [NSJSONSerialization isValidJSONObject:theString];
NSLog(@"Value %d %@",isValid, theString);
对我来说价值即将到来并告诉我“在哪里”
是
错