2014-12-01 105 views
0

下面的代碼完美地將我從URL/JSON文件獲取的NSData轉換爲NSString,EXCEPTION MADE通過數據包含的換行符!如何將包含換行符的NSData轉換爲NSString

我的代碼有什麼問題?

我的代碼:

NSError *errorColetar = nil; 
NSURL *aColetarUrl = [[NSURL alloc]initWithString:@"http://marcosdegni.com.br/petsistema/teste/aColetar3.php"]; 
NSString *aColetarString = [NSString stringWithContentsOfURL:aColetarUrl encoding:NSUTF8StringEncoding error:&errorColetar]; 

NSLog(@"NSString: %@", aColetarString); 

if (!errorColetar) { 
    NSData *aColetarData = [aColetarString dataUsingEncoding:NSUTF8StringEncoding]; 
    self.arrayAColetar = [NSJSONSerialization JSONObjectWithData:aColetarData options:kNilOptions error:nil]; 
} 
NSLog(@"arrayAColetar %@", self.arrayAColetar); 

登錄結果:

**NSString**: [{"id_atendimento":"2","observacoes":"ABC-Enter--> 
DEF-Enter--> 
GFH-END"},{"id_atendimento":"1","observacoes":"123Enter--> 
345Enter--> 
678End"}] 

**arrayAColetar** (null) 

正如你可以看到我的底線是空數組:(

在此先感謝

+0

這是不可能的一個NSData包含換行符,因爲它不(一定)表示字符數據,但僅僅是字節。 (這裏是你的bug:'error:nil]'。) – 2014-12-01 16:48:36

+0

感謝您的幫助。我會研究這個錯誤。 – 2014-12-01 16:53:07

回答

0

通過!檢查隱藏在'error:nil'下面的錯誤信息我發現了「字符周圍的非轉義控制字符」i從Unescaped control characters in NSJSONSerialization ssue並執行下面的代碼,並得到一個新的'清理'字符串。

- (NSString *)stringByRemovingControlCharacters: (NSString *)inputString { 

NSCharacterSet *controlChars = [NSCharacterSet controlCharacterSet]; 
NSRange range = [inputString rangeOfCharacterFromSet:controlChars]; 
if (range.location != NSNotFound) { 
    NSMutableString *mutable = [NSMutableString stringWithString:inputString]; 
    while (range.location != NSNotFound) { 
     [mutable deleteCharactersInRange:range]; 
     range = [mutable rangeOfCharacterFromSet:controlChars]; 
    } 
    return mutable; 
} 
return inputString; 

}