2009-09-04 55 views
4
NSString *tmpStr = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; 
xmlSms = [xmlSms stringByAppendingString:tmpStr]; 
NSLog(xmlSms); 

我得到了上面的代碼,但NSLog沒有顯示任何東西......有人知道這個問題??stringByAppendingString問題在目標c

回答

9

沒關係...我想出了爲什麼。 問題是,當你想在字符串上使用stringByAppendingString時,字符串應該有初始值。

錯誤例如:

NSString *str1; 
str1 = [str1 stringByAppendingString:@"test"]; 

應該是:

NSString *str1 = @""; 
str1 = [str1 stringByAppendingString:@"test"]; 
4

您對NSLog的調用不正確。嘗試:

NSLog(@"%@", xmlSms); 
+2

要展開,'%@'是用於在'的NSLog()'格式字符串對象,它適用於格式說明'NSString'實例,因爲它們是對象。這裏解釋了字符串格式說明符:http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/Strings/Articles/Artt/formatSpecifiers.html#//apple_ref/doc/uid/TP40004265 – 2009-09-04 06:05:30

+1

這不是問題,我已經檢查了xmlSms的長度,它顯示爲0.和nslog(xmlsms)應該工作太多,因爲我已經做了很多次。問題是爲什麼appendingstring不起作用 – BlackSoil 2009-09-04 13:01:12

+0

如何創建xmlSms?你可以顯示該變量的代碼嗎? – fbrereto 2009-09-04 16:09:01

0

在Cocoa中,初始化函數(「構造」)經常回nil如果他們失敗出於某種原因或其他。爲NSString狀態的文檔:如果初始化由於某種原因失敗

返回nil(例如,如果數據並不代表編碼的有效數據)。

您確定傳遞給init函數的NSData對象實際上包含UTF8編碼的字符串嗎?如果沒有,返回的對象將是nil

+0

是的,NSString * tmpStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 這是你的意思嗎? 我認爲問題是關於這個,xmlSms = [xmlSms stringByAppendingString:tmpStr]; 但我不明白爲什麼它不工作.. – BlackSoil 2009-09-04 14:19:19