首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将NSString转换为NSData - [NSString dataUsingEncoding]异常

将NSString转换为NSData - [NSString dataUsingEncoding]异常
EN

Stack Overflow用户
提问于 2012-04-02 02:17:40
回答 3查看 20.8K关注 0票数 6

我将NSString转换为NSData以便通过JSON进行解析,但是我得到了以下错误。

代码语言:javascript
运行
复制
Terminating app due to uncaught exception 'NSInvalidArgumentException', 
  reason: '-  [__NSCFDictionary dataUsingEncoding:]: 
  unrecognized   selector sent to instance 0x7987d60'

代码如下:

代码语言:javascript
运行
复制
NSData *data = [str dataUsingEncoding:NSASCIIStringEncoding]; 
//NSUTF8StringEncoding also failed.
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];

在我看来,这是因为str包含换行符:‘\n’。

我说的对吗?

有人能帮我解决这个问题吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-02 03:34:20

您的错误说明您正试图将dataUsingEncoding:allowLossyConversion:发送给NSDictionary的一个实例,该实例不知道如何处理该选择器。确保您的str对象实际上是一个字符串...

票数 9
EN

Stack Overflow用户

发布于 2012-04-02 02:34:31

尝试使用NSUnicodeStringEncoding而不是NSASCIIStringEncoding。因此,请替换下面这行:

代码语言:javascript
运行
复制
NSData *data = [str dataUsingEncoding:NSASCIIStringEncoding]; 

有了这个:

代码语言:javascript
运行
复制
NSData *data = [str dataUsingEncoding:NSUnicodeStringEncoding]; 
票数 3
EN

Stack Overflow用户

发布于 2012-04-02 03:09:13

我刚刚检查了我的样例字符串。**如果你可以给我你的字符串,那么我可以用我的以下示例代码来签出。

代码语言:javascript
运行
复制
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);

对我来说,值是0,告诉我“哪里”

不对

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9966953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档