簡體   English   中英

將NSString轉換為NSData - [NSString dataUsingEncoding]異常

[英]converting NSString to NSData - [NSString dataUsingEncoding] exception

我正在將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'。

我對么?

請問有人幫我解決這個問題嗎?

您的錯誤表明您正在嘗試將dataUsingEncoding:allowLossyConversion:發送到NSDictionary的實例,該實例不知道如何處理該選擇器。 確保你的str對象實際上是一個字符串......

嘗試使用NSUnicodeStringEncoding而不是NSASCIIStringEncoding 所以更換線:

NSData *data = [str dataUsingEncoding:NSASCIIStringEncoding]; 

有了這個:

NSData *data = [str dataUsingEncoding:NSUnicodeStringEncoding]; 

我只是檢查了我的樣本字符串。 **如果你能給我你的字符串,那么我可以用我的以下示例代碼簽出。

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);

對我來說價值即將到來並告訴我“在哪里”

錯誤

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM